Lọc danh sách bằng vba

Bạn cần phải lọc một danh sách duy nhất từ một danh sách đầy thông tin trùng lắp với nhau, bạn có thế sử dụng chức năng “remove duplicates” để giải quyết nó. Nhưng phải làm thế nào với trường hợp dùng VBA để lọc.

 

Dưới đây sẽ là code để bạn biết cách làm thế nào để có thể lọc ra danh sách duy nhất từ một danh sách có các giá trị trùng lắp với nhau.

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

Code function để sử dụng cho nhiều trường hợp cần lọc duy nhất.

Public Function LocDuyNhat(Rng As Range)
Dim vaData As Variant
Dim colUnique As Collection
Dim aOutput() As Variant
Dim i As Long

'Lay du lieu can loc dua vao mang

vaData = Rng.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

' Trả giá trị lọc được về

LocDuyNhat = aOutput()

End Function

Code gọi function và xuất nó ra cột để sử dụng

' Khai báo biến aOutput để lưu mảng trả về để tiện cho việc sử dụng

Dim LuuDS() As Variant

' Gọi hàm (function) và truyền dữ liệu vào để tìm

LuuDS= LocDuyNhat(Sheet2.Range("F5:F1000"))

' xuất danh sách đã lọc ra cột D bắt đầu từ D5

Sheet11.Range("D5").Resize(UBound(LuuDS, 1), UBound(LuuDS, 2)).Value = LuuDS

Leave a Comment

sơn epoxy / sơn sàn epoxy / cửa lưới chống muỗi / vách ngăn lướii chống muỗi / cửa lùa chống muỗi / vệ sinh công nghiệp / đánh bóng sàn bê tông / vệ sinh nhà máy / dịch vụ giặt thảmm / vệ sinh nhà hàng / vệ sinh tòa nhà / dịch vụ vệ sinh kính / vệ sinh khách sạn / vệ sinh chung cư / dịch vụ cắt cỏ / đánh bóng kính / diệt côn trùng / diệt mối / diệt kiến / diệt muỗi / diệt ruồi / diệt gián / diệt chuột / dọn bể nước ngầm / phụ kiện mái che / cơ khí chế tạo / mái che di động / rèm nhựa / vách nhựa ngăn phòng lạnh / rèm nhựa phòng lạnh / dù che nắng / mái kéo di động / nhà bạt di động / mái xếp di động / mái hiên di động / thay bạt mái hiên di động / bạt che nắng / phụ kiện mái che di động / mái che sân thượng / mái che quán cafe / mái che di động miền bắc / mái che di động miền nam / bạt che di động hcm /