|
Function FilterDuplicates(arr As Variant) As Long
Dim col As Collection, index As Long, dups As Long Set col = New Collection On Error Resume Next For index = LBound(arr) To UBound(arr) ' build the key using the array element ' an error occurs if the key already exists col.Add 0, CStr(arr(index)) If Err Then ' we've found a duplicate arr(index) = Empty dups = dups + 1 Err.Clear ElseIf dups Then ' if we've found one or more duplicates so far ' we need to move elements towards lower indices arr(index - dups) = arr(index) arr(index) = Empty End If Next ' return the number of duplicates FilterDuplicates = dups End Function |