Để 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.
Nhận xét
Đăng nhận xét