VBA – Duplikate aus Array entfernen
In diesem Tutorial lernen Sie, wie Sie Duplikate aus einem Array in VBA entfernen können.
Duplikate entfernen
Der einfachste Weg, Duplikate aus einem VBA-Array zu entfernen, besteht darin, die Array-Werte einer VBA-Sammlung zuzuweisen und die Werte dann wieder an ein Array zu übergeben. Sammlungen lassen keine doppelten Werte zu und so können wir mit einer Sammlung Duplikate aus einem Array entfernen. Wir haben eine Funktion erstellt, um diese Aufgabe zu erfüllen:
Function ArrayDuplikateEntfernen(MeinArray As Variant) As Variant
Dim nErste As Long, nLetzte As Long, i As Long
Dim Element As String
Dim arrTemp() As String
Dim Coll As New Collection
'Erste und letzte Array-Position ermitteln
nErste = LBound(MeinArray)
nLetzte = UBound(MeinArray)
ReDim arrTemp(nErste To nLetzte)
'Array in String umwandeln
For i = nErste To nLetzte
arrTemp(i) = CStr(MeinArray(i))
Next i
'Temporäre Sammlung auffüllen
On Error Resume Next
For i = nErste To nLetzte
Coll.Add arrTemp(i), arrTemp(i)
Next i
Err.Clear
On Error GoTo 0
'Größe des Arrays ändern
nLetzte = Coll.Count + nErste - 1
ReDim arrTemp(nErste To nLetzte)
'Array auffüllen
For i = nErste To nLetzte
arrTemp(i) = Coll(i - nErste + 1)
Next i
'Array ausgeben
ArrayDuplikateEntfernen = arrTemp
End Function
Sub ArrTesten()
Dim strNamen(1 To 4) As String
Dim AusgabeArray() As String
Dim i As Long
Dim Element As Variant
'Array-Anfangswerte festlegen
strNamen(1) = "Shelly"
strNamen(2) = "Steve"
strNamen(3) = "Neema"
strNamen(4) = "Steve"
'Dup-Funktion aufrufen
AusgabeArray = ArrayDuplikateEntfernen(strNamen)
'Werte im Dierektfenster ausgeben (STRG + G)
For Each Element In AusgabeArray
Debug.Print Element
Next Element
End Sub
Hinweis: Im Beispiel haben wir unser Array dazu gezwungen, bei 1 zu beginnen (nicht bei 0). Wenn Ihr Array bei 0 beginnt, müssen Sie den Code leicht abändern.
Beachten Sie, dass wir den Inhalt des Arrays in eine Zeichenkette umwandeln. Falls erforderlich, können Sie die Zeichenketten nach Abschluss des Prozesses wieder in Ganzzahlen umwandeln.