Thống kê, lọc danh sách giao dịch. Nhờ các bác giúp với ạ!

Liên hệ QC

namhandsome1

Thành viên mới
Tham gia
11/9/16
Bài viết
38
Được thích
3
Em có bảng cdsl excel (thực tế nhiều dòng với các giao dịch được xắp xếp hỗn độn, có có nào dùng VBA để lọc ra được thành 1 ds như phía dưới. Ý định của em là đưa cái kết quả vào vào 1 listbox, nhưng em chưa tìm ra thuật toán cũng như code để giải quyết, các bác giúp em với. Thanks các bác nhiều ạ.
 

File đính kèm

  • Book1.xlsx
    10.9 KB · Đọc: 15
Macro này sẽ cho ra dư 1 dòng (có STT 4)
PHP:
Option Explicit
Sub DSachDN()
 Dim Dict As Object, Arr() As Variant, Sh As Worksheet
 Dim Rws As Long, W As Integer, J As Long, Dm As Byte
 
 Set Dict = CreateObject("Scripting.Dictionary")
 Set Sh = ThisWorkbook.Worksheets("Sheet1")
 Rws = Sh.[c3].CurrentRegion.Rows.Count
 Arr() = Sh.[c3].Resize(Rws, 3).Value
 ReDim dArr(1 To Rws, 1 To 4)
 dArr(1, 1) = "STT":                            dArr(1, 2) = "Ngày"
 dArr(1, 3) = "Noi Dung":                       dArr(1, 4) = "Sô HD"
 [K2].Resize(Rws, 4).Value = dArr():            W = 1
 For J = 1 To UBound(Arr())
    If Not IsEmpty(Arr(J, 2)) And Not Dict.exists(Arr(J, 2) & Arr(J, 3)) Then
        W = W + 1:                              Dict.Add Arr(J, 2) & Arr(J, 3), W
        dArr(W, 1) = W - 1
        For Dm = 2 To 4
            dArr(W, Dm) = Arr(J, Dm - 1)
        Next Dm
    End If
 Next J
 If W Then
    [K2].Resize(W, 4).Value = dArr()
 End If
End Sub
 
Upvote 0
Web KT
Back
Top Bottom