Entfernen von doppelten Array Zeilen in Excel VBA

August 9

Entfernen von doppelten Array Zeilen in Excel VBA

Entfernen von Duplikaten aus einem Array mithilfe von Visual Basic für Applikationen (VBA) in Excel kann verwirrend sein, wenn Sie kein erfahrener VBA-Programmierer sind. Sortieren und Entfernen von doppelten Daten aus einem Array ist ein iterativer Prozess, der erfordert eines relativ hoch entwickelten Algorithmus, aber kann leicht erreicht werden, indem ein paar einfache Schritte. In VBA können Sie eine "für... Loop"und"Collection"-Objekt zu verfolgen eindeutige Elemente in das Array und der Prozess ist ziemlich schnell, abhängig von der Größe des Arrays.

Anweisungen

1 Klicken Sie auf die Registerkarte "Entwicklertools" und klicken Sie auf "Visual Basic", das VB-Editor-Fenster zu starten. Legen Sie ein neues Codemodul, indem Sie auf das Menü "Einfügen" und "Module".

2 Erstellen Sie eine neue Sub-Prozedur und definieren Sie drei Variablen, die Sie verwenden werden, um Duplikate im Array zu entfernen.

Private Sub removeDuplicates()

Dim strArray(5) As String

Dim myCol As Collection

Dim idx As Long

Set myCol = New Collection3

Ihr Array doppelte Daten hinzufügen.

strArray(0) = "bbb"

strArray(1) = "bbb"

strArray(2) = "ccc"

strArray(3) = "ddd"

strArray(4) = "ddd"4

Kopieren und fügen Sie den folgenden Code zum Erstellen einer "für... Loop"und Schleife durch die einzelnen Elemente des Arrays um Duplikate zu entfernen:

On Error Resume Next

For idx = LBound(strArray) To UBound(strArray)

myCol.Add 0, CStr(strArray(idx))

If Err Then

strArray(idx) = Empty

dups = dups + 1

Err.Clear

ElseIf dups Then

strArray(idx - dups) = strArray(idx)

strArray(idx) = Empty

End If

Next5

Drucken Sie jedes Element im Array in das Direktfenster zu zeigen, dass Duplikate entfernt wurden.

For idx = LBound(strArray) To UBound(strArray)

Debug.Print strArray(idx)

Next6

Geben Sie "End Sub", Ihr Verfahren zu beenden. Klicken Sie im Menü "Ausführen" und klicken Sie auf die Wiedergabeschaltfläche, um das Programm auszuführen.