VBA – Duplikate aus Array entfernen

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on April 28, 2023

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.

vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples