Remove duplicates from array using VBA

前端 未结 8 785
猫巷女王i
猫巷女王i 2020-11-27 22:12

Assume I have a block of data in Excel 2010, 100 rows by 3 columns.

Column C contains some duplicates, say it starts off as

1, 1, 1, 2, 3, 4,

8条回答
  •  有刺的猬
    2020-11-27 23:14

    An improvement on @RBILLC and @radoslav006 answers, this version searches the array with the duplicates removed for existing values so it searchs less values to find a duplicate.

    Public Function RemoveDuplicatesFromArray(sourceArray As Variant)
        Dim duplicateFound As Boolean
        Dim arrayIndex As Integer, i As Integer, j As Integer
        Dim deduplicatedArray() As Variant
        
        arrayIndex = -1
        deduplicatedArray = Array(1)
    
        For i = LBound(sourceArray) To UBound(sourceArray)
            duplicateFound = False
    
            For j = LBound(deduplicatedArray) To UBound(deduplicatedArray)
                If sourceArray(i) = deduplicatedArray(j) Then
                    duplicateFound = True
                    Exit For
                End If
            Next j
    
            If duplicateFound = False Then
                arrayIndex = arrayIndex + 1
                ReDim Preserve deduplicatedArray(arrayIndex)
                deduplicatedArray(arrayIndex) = sourceArray(i)
            End If
        Next i
    
        RemoveDuplicatesFromArray = deduplicatedArray
    End Function
    

提交回复
热议问题