FilterDuplicates – Delete duplicate items in an array

FilterDuplicates – Delete duplicate items in an array

' Filter out duplicate values in an array and compact' the array by moving items to "fill the gaps".' Returns the number of duplicate values'' it works with arrays of any type, except objects'' The array is not REDIMed, but you can do it easily using' the following code:'     a() is a string array'     dups = FilterDuplicates(a())'     If dups Then'         ReDim Preserve a(LBound(a) To UBound(a) - dups) As String'     End IfFunction 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


About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist