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

Liên hệ QC

Người dùng đang xem chủ đề này

namhandsome1

Thành viên mới
Tham gia
11/9/16
Bài viết
38
Được thích
5
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

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

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

Back
Top Bottom