VBA - Duplikate aus dem Array entfernen

Inhaltsverzeichnis

In diesem Tutorial erfahren Sie, wie Sie Duplikate aus einem Array in VBA entfernen.

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 an ein Array zurückzugeben. Collections erlauben keine doppelten Werte und daher können wir mit einer Collection Duplikate aus einem Array entfernen. Wir haben eine Funktion erstellt, um diese Aufgabe auszuführen:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Funktion ArrayRemoveDups(MyArray As Variant) As VariantDim nFirst As Long, nLast As Long, i As LongArtikel als String dimmenDim arrTemp() als StringDim Coll als neue Kollektion'Erste und letzte Array-Positionen abrufennFirst = LBound(MyArray)nLast = UBound(MyArray)ReDim arrTemp(nFirst To nLast)'Array in String umwandelnFür i = nFirst To nLastarrTemp(i) = CStr(MyArray(i))Als nächstes'Vorübergehende Sammlung bevölkernBei Fehler Fortsetzen als nächstesFür i = nFirst To nLastKol.Hinzufügen arrTemp(i), arrTemp(i)Als nächstesErr.ClearBei Fehler GoTo 0'Größe des Arrays ändernnLast = Slg.Count + nFirst - 1ReDim arrTemp(nFirst To nLast)'Array auffüllenFür i = nFirst To nLastarrTemp(i) = Coll(i - nFirst + 1)Als nächstes'Ausgabe-ArrayArrayRemoveDups = arrTempEndfunktionUnter ArrTest()Dim strNames(1 bis 4) als StringDim outputArray() As StringDim ich so langArtikel als Variante dimmen'Anfängliche Array-Werte festlegenstrNames(1) = "Shelly"strNames(2) = "Steve"strNames(3) = "Neema"strNames(4) = "Steve"'Dup-Funktion aufrufenoutputArray = ArrayRemoveDups(strNames)'Werte in Direktfenster ausgeben (STRG + G)Für jedes Element in outputArrayDebug.Print-ElementNächstes ObjektEnd Sub

Hinweis: Im Beispiel haben wir unser Array gezwungen, bei 1 (nicht 0) zu beginnen. Wenn Ihr Array bei 0 beginnt, müssen Sie den Code leicht ändern.

Beachten Sie, dass wir den Array-Inhalt in einen String konvertieren. Bei Bedarf können Sie die Zeichenfolgen nach Abschluss des Vorgangs wieder in Ganzzahlen konvertieren.

wave wave wave wave wave