Header Ads

Hàm trong VBA tìm tất cả các giá trị lặp lại trong một vùng Function FindDuplicates



Để viết một hàm UDF (User Defined Function) trong VBA (Visual Basic for Applications) tìm tất cả các giá trị lặp lại trong một vùng, bạn có thể làm như sau:

  1. Mở Excel và nhấn Alt + F11 để mở cửa sổ VBA.
  2. Chọn Insert > Module để tạo một module mới.
  3. Dán mã VBA sau vào module mới:
Function FindDuplicates(rng As Range) As String
    Dim cell As Range
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")

    ' Lặp qua từng ô trong vùng được chỉ định
    For Each cell In rng
        If Not IsEmpty(cell.Value) Then
            ' Kiểm tra nếu giá trị đã tồn tại trong từ điển
            If dict.exists(cell.Value) Then
                dict(cell.Value) = dict(cell.Value) + 1
            Else
                dict.Add cell.Value, 1
            End If
        End If
    Next cell

    ' Tạo một chuỗi để chứa các giá trị lặp lại
    Dim result As String
    result = ""

    ' Lặp qua từng mục trong từ điển
    Dim key As Variant
    For Each key In dict.Keys
        If dict(key) > 1 Then
            result = result & key & ", "
        End If
    Next key

    ' Loại bỏ dấu phẩy cuối cùng
    If Len(result) > 0 Then
        result = Left(result, Len(result) - 2)
    End If

    FindDuplicates = result
End Function
  1. Đóng cửa sổ VBA và quay lại Excel.

Bây giờ bạn có thể sử dụng hàm FindDuplicates như một hàm thông thường trong Excel. Ví dụ:

=FindDuplicates(A1:A10)

Hàm này sẽ trả về một chuỗi chứa tất cả các giá trị lặp lại trong vùng từ A1 đến A10, được phân tách bằng dấu phẩy.

No comments

Powered by Blogger.