Để 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:
- Mở Excel và nhấn
Alt + F11
để mở cửa sổ VBA. - Chọn
Insert
>Module
để tạo một module mới. - 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
- Đó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.