Doppelte Einträge entfernen und Übereinstimmungen suchen
15. Juni 2008
Mit einer Collection ist in VBA einiges möglich. Doppelte Einträge lassen sich eliminieren, indem beim Hinzufügen des Elements zur Collection ein eindeutiger "Key" zugewiesen wird. Jeder Key darf nur einmal in der Collection vorhanden sein. Beim zweiten Versuch, ein identisches Element mit dem identischen Key hinzuzufügen, wird der Vorgang mit einer Fehlermeldung abgebrochen. On Error Resume Next verhindert die Fehlermeldung.
Weiterhin lassen sich zwei Collections miteinander vergleichen, indem man versucht, das Element direkt über den Key anzusprechen. Übereinstimmenden Einträge können so einfach aufgefunden werden.
VBA:
-
Sub collectionDemo()
-
'Doppelte Eintraege entfernen und Uebereinstimmungen suchen
-
'06-2008 By E.Bimczok
-
-
Dim BasisArrayA
-
Dim BasisArrayB
-
-
BasisArrayA = Array(1, 3, 5, 7, 8)
-
BasisArrayB = Array(1, 1, 1, 1, 2, 3, 2, 3, 4, 3, 2, 5, 4)
-
Dim CollA As New Collection
-
Dim CollB As New Collection
-
-
On Error Resume Next
-
-
For k = LBound(BasisArrayA) To UBound(BasisArrayA)
-
CollA.Add BasisArrayA(k), "x" & BasisArrayA(k)
-
Next k
-
-
For k = LBound(BasisArrayB) To UBound(BasisArrayB)
-
CollB.Add BasisArrayB(k), "x" & BasisArrayB(k)
-
Next k
-
-
'übereinstimmungen suchen
-
For Each c In CollA
-
temp = CollB("x" & c)
-
If temp = c Then
-
Stop
-
'match
-
Else
-
Stop
-
'mismatch
-
End If
-
Next c
-
-
End Sub
Dienstag 23. September 2008 um 9:53 pm
Hallo,
leider verstehe ich die Zeile 16 nicht: mit .add addiere ich den BasisArrayB(k) zur Collection CollA, aber was bedeutet der Rest der Anweisung (, “x” & BasisArrayA(k)). Kann mir das jemand erklären?
Über eine Antwort würde ich mich sehr freuen.
Danke
Dienstag 23. September 2008 um 10:18 pm
Hallo Paul,
der Collection wird damit ein KEY zugewiesen, d.h. ein eindeutiger String. Damit ein String entsteht, wird einfach ein beliebiger String verwendet (hier “x”) und der Inhalt des Arrays angehängt. Es entsteht zum Beispiel der String “x1″.
Da jeder Key nur einmal vorkommen darf, werden damit doppelte Einträge vermieden.
Mit dem Key kann man übrigens auch den Inhalt der Collection ansprechen: ColA(“x1″) liefert also 1 zurück.
Gruß
Eike
Samstag 27. September 2008 um 8:01 pm
Danke, jetzt hab ich es kapiert!