Có những lúc chúng ta cần phải lấy ra một danh sách từ một danh sách có rất nhiều dữ liệu trùng nhau.
Người ta thường gọi đây là lọc trùng lặp, có rất nhiều cách có thể làm trong trường hợp này như dùng chức năng filter để làm. Tuy nhiên để "bờ rồ" hơn thì dùng code để thấy được nó vi diệu đến dường nào.
Hãy cùng khám phá cách thực hiện với code dưới đây.
Dưới đây là code vba để lọc ra danh sách đó.
Sub LocDuLieu_Duynhat() Dim vaData As Variant Dim colUnique As Collection Dim aOutput() As Variant Dim i As Long Dim LastRow As Long LastRow = Worksheets(Sheet1.Name).Cells(2, "A").End(xlDown).Row 'Lay du lieu can loc dua vao mang vaData = Sheet1.Range("A2:G" & LastRow).Value 'Create a new collection Set colUnique = New Collection 'Loop through the data For i = LBound(vaData, 1) To UBound(vaData, 1) 'Collections can't have duplicate keys, so try to 'add each item to the collection ignoring errors. 'Only unique items will be added On Error Resume Next colUnique.Add vaData(i, 1), CStr(vaData(i, 1)) On Error GoTo 0 Next i 'size an array to write out to the sheet ReDim aOutput(1 To colUnique.Count, 1 To 1) 'Loop through the collection and fill the output array For i = 1 To colUnique.Count aOutput(i, 1) = colUnique.Item(i) Next i 'Write the unique values to column B Sheet1.Range("B2").Resize(UBound(aOutput, 1), UBound(aOutput, 2)).Value = aOutput End Sub
No comments:
Write nhận xét