Giúp code lấy dự liệu dòng cuối nếu trùng Tháng

Liên hệ QC

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE ! Em cần 1 đoạn code Lấy dữ liệu từng tháng, nếu tháng nào xuất hiện >1 lần thì lấy dòng cuối. Em xin Chân thành cảm ơn !

1540864462376.png
 

File đính kèm

Chào cả nhà GPE ! Em cần 1 đoạn code Lấy dữ liệu từng tháng, nếu tháng nào xuất hiện >1 lần thì lấy dòng cuối. Em xin Chân thành cảm ơn !

View attachment 206673
Phải có cột ngày hay cột nào đó để lấy dữ liệu cho chính xác, chứ lấy dòng cuối thì nhỡ trong quá trình làm người ta đã sort dữ liệu ở 1 cột nào đó thì sao?
 
Upvote 0
Chào cả nhà GPE ! Em cần 1 đoạn code Lấy dữ liệu từng tháng, nếu tháng nào xuất hiện >1 lần thì lấy dòng cuối. Em xin Chân thành cảm ơn !

View attachment 206673
Em sử dụng công thức gửi Anh tham khảo.
Cột tháng:
PHP:
=IFERROR(INDIRECT(MID(REPT(TEXT(AGGREGATE(15,6,(ROW($A$4:$A$18)+COLUMN($A$1:$E$1)*10^3)/(COUNTIF($M$3:$M3,$A$4:$A$18)=0),1),"C000R000"),2),5,8),),"")
Cột Lang:
=LOOKUP(2,1/($A$4:$A$18=$M4),B$4:B$18) copy cho các cột còn lại.
 

File đính kèm

Upvote 0
Phải có cột ngày hay cột nào đó để lấy dữ liệu cho chính xác, chứ lấy dòng cuối thì nhỡ trong quá trình làm người ta đã sort dữ liệu ở 1 cột nào đó thì sao?
Dữ liệu đó cố định nằm trong sheet data luôn roi Anh. em muốn dùng code lấy ra theo tháng thôi
Bài đã được tự động gộp:

Em sử dụng công thức gửi Anh tham khảo.
Cột tháng:
PHP:
=IFERROR(INDIRECT(MID(REPT(TEXT(AGGREGATE(15,6,(ROW($A$4:$A$18)+COLUMN($A$1:$E$1)*10^3)/(COUNTIF($M$3:$M3,$A$4:$A$18)=0),1),"C000R000"),2),5,8),),"")
Cột Lang:
=LOOKUP(2,1/($A$4:$A$18=$M4),B$4:B$18) copy cho các cột còn lại.
dữ liệu của mình 5000 dòng anh. Công thức này thì em biết rồi. Sẽ rất chậm em muốn dùng code anh
 
Upvote 0
Dữ liệu đó cố định nằm trong sheet data luôn roi Anh. em muốn dùng code lấy ra theo tháng thôi
Bài đã được tự động gộp:


dữ liệu của mình 5000 dòng anh. Công thức này thì em biết rồi. Sẽ rất chậm em muốn dùng code anh
tại do Anh đưa có mấy dòng thì em làm mấy dòng thôi. Em biết dữ liệu Anh sẽ nhiều em đưa cho Anh tham khảo thôi.
 
Upvote 0
Upvote 0
Em sử dụng công thức gửi Anh tham khảo.
Cột tháng:
PHP:
=IFERROR(INDIRECT(MID(REPT(TEXT(AGGREGATE(15,6,(ROW($A$4:$A$18)+COLUMN($A$1:$E$1)*10^3)/(COUNTIF($M$3:$M3,$A$4:$A$18)=0),1),"C000R000"),2),5,8),),"")
Cột Lang:
=LOOKUP(2,1/($A$4:$A$18=$M4),B$4:B$18) copy cho các cột còn lại.
Với dạng số, cột tháng chỉ cần
Mã:
=IFERROR(SMALL($A$4:$A$18,SUMPRODUCT(COUNTIF($A$4:$A$18,$H$3:H3))+1),"")
 
Upvote 0
Upvote 0
tại do Anh đưa có mấy dòng thì em làm mấy dòng thôi. Em biết dữ liệu Anh sẽ nhiều em đưa cho Anh tham khảo thôi.
Người ta nói "biết rồi" mờ. Chả có gì cần "tham khảo" cả.
Bạn làm việc bao lâu mà không biết thớt đây là dân xịn C++.
Chỉ nhờ viết giùm VBA thôi, mọi thứ khác xin miễn.

Lại gặp chủ thớt này ! dạo này viết phần mềm nhiều thế! chúc sức khỏe...!
Ra chiêu cho thiên hạ viết chứ có viết bao giờ đâu.
 
Upvote 0
Người ta nói "biết rồi" mờ. Chả có gì cần "tham khảo" cả.
Bạn làm việc bao lâu mà không biết thớt đây là dân xịn C++.
Chỉ nhờ viết giùm VBA thôi, mọi thứ khác xin miễn.


Ra chiêu cho thiên hạ viết chứ có viết bao giờ đâu.
Hổng biết viết, nhưng mà được cái hay hỏi nên cũng có được 1 sao màu vàng trên ngực rùi chứ lị
Bài đã được tự động gộp:

tại do Anh đưa có mấy dòng thì em làm mấy dòng thôi. Em biết dữ liệu Anh sẽ nhiều em đưa cho Anh tham khảo thôi.
Người ta biết rồi mà còn đưa ra. Hihi :p
 
Upvote 0

File đính kèm

Upvote 0
Một cách viết:
Mã:
Public Sub Loc()
    Dim Vung, I, J, Dic, Tam, K, kK
    Vung = Range([A4], [A50000].End(xlUp)).Resize(, 5)
    ReDim Tam(1 To UBound(Vung), 1 To UBound(Vung, 2))
    Set Dic = CreateObject("scripting.dictionary")
        For I = 1 To UBound(Vung)
            If Not Dic.exists(Vung(I, 1)) Then
                K = K + 1
                Dic.Add Vung(I, 1), K
                For J = 1 To UBound(Vung, 2)
                    Tam(K, J) = Vung(I, J)
                Next J
            Else
                kK = Dic.Item(Vung(I, 1))
                For J = 2 To UBound(Vung, 2)
                    Tam(kK, J) = Vung(I, J)
                Next J
            End If
        Next I
[N4].Resize(K, 5) = Tam
End Sub
 

File đính kèm

Upvote 0
Chỉ cần
Mã:
Sub GPE()
  Dim Thang(1 To 12) As Byte, i As Long, eRow As Long, k As Long
  eRow = Range("A4").End(xlDown).Row
  For i = 4 To eRow
    Thang(Cells(i, "A").Value) = i
  Next i
  k = 4
  For i = 1 To 12
    If Thang(i) > 0 Then
      Cells(k, "H").Resize(, 5).Value = Cells(Thang(i), "A").Resize(, 5).Value
      k = k + 1
    End If
  Next i
End Sub
 
Upvote 0
Một cách viết:
Mã:
Public Sub Loc()
    Dim Vung, I, J, Dic, Tam, K, kK
    Vung = Range([A4], [A50000].End(xlUp)).Resize(, 5)
    ReDim Tam(1 To UBound(Vung), 1 To UBound(Vung, 2))
    Set Dic = CreateObject("scripting.dictionary")
        For I = 1 To UBound(Vung)
            If Not Dic.exists(Vung(I, 1)) Then
                K = K + 1
                Dic.Add Vung(I, 1), K
                For J = 1 To UBound(Vung, 2)
                    Tam(K, J) = Vung(I, J)
                Next J
            Else
                kK = Dic.Item(Vung(I, 1))
                For J = 2 To UBound(Vung, 2)
                    Tam(kK, J) = Vung(I, J)
                Next J
            End If
        Next I
[N4].Resize(K, 5) = Tam
End Sub
Cái này theo em nên chạy từ cuối nên đầu sẽ tránh được việc gán giá trị nhiều lần
for i = ubound(vung) to 1 step -1
 
Upvote 0
Một cách viết:
Mã:
Public Sub Loc()
    Dim Vung, I, J, Dic, Tam, K, kK
    Vung = Range([A4], [A50000].End(xlUp)).Resize(, 5)
    ReDim Tam(1 To UBound(Vung), 1 To UBound(Vung, 2))
    Set Dic = CreateObject("scripting.dictionary")
        For I = 1 To UBound(Vung)
            If Not Dic.exists(Vung(I, 1)) Then
                K = K + 1
                Dic.Add Vung(I, 1), K
                For J = 1 To UBound(Vung, 2)
                    Tam(K, J) = Vung(I, J)
                Next J
            Else
                kK = Dic.Item(Vung(I, 1))
                For J = 2 To UBound(Vung, 2)
                    Tam(kK, J) = Vung(I, J)
                Next J
            End If
        Next I
[N4].Resize(K, 5) = Tam
End Sub

Cảm ơn Code Bác. Chạy hoàn toàn chính xác. Tiện thể cho em hỏi Nếu trường hợp trùng tháng lấy dòng trên cùng thì sữa code như thế nào .Cảm ơn bác Mũ En Nờ Lần
 
Upvote 0
Cảm ơn Code Bác. Chạy hoàn toàn chính xác. Tiện thể cho em hỏi Nếu trường hợp trùng tháng lấy dòng trên cùng thì sữa code như thế nào .Cảm ơn bác Mũ En Nờ Lần
lấy dòng trên cùng nó còn đơn giản hơn lấy dòng cuối cùng à :D bạn chạy code bằng F8 thì khác rõ
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom