FilterDup



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


(filterdup.html)- by Paolo Puglisi - Modifica del 25/3/2019