Profi-Excel.de

Die Seite für den professionellen Umgang mit Excel und VBA

      • 4 user online
      • 48389 Besucher insgesamt

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:
  1. Sub collectionDemo()
  2. 'Doppelte Eintraege entfernen und Uebereinstimmungen suchen
  3. '06-2008 By E.Bimczok
  4.  
  5. Dim BasisArrayA
  6. Dim BasisArrayB
  7.  
  8. BasisArrayA = Array(1, 3, 5, 7, 8)
  9. BasisArrayB = Array(1, 1, 1, 1, 2, 3, 2, 3, 4, 3, 2, 5, 4)
  10. Dim CollA As New Collection
  11. Dim CollB As New Collection
  12.  
  13. On Error Resume Next
  14.  
  15. For k = LBound(BasisArrayA) To UBound(BasisArrayA)
  16.   CollA.Add BasisArrayA(k), "x" & BasisArrayA(k)
  17. Next k
  18.  
  19. For k = LBound(BasisArrayB) To UBound(BasisArrayB)
  20.   CollB.Add BasisArrayB(k), "x" & BasisArrayB(k)
  21. Next k
  22.  
  23. 'übereinstimmungen suchen
  24. For Each c In CollA
  25.   temp = CollB("x" & c)
  26.   If temp = c Then
  27.     Stop
  28.     'match
  29.   Else
  30.     Stop
  31.     'mismatch
  32.   End If
  33. Next c
  34.  
  35. End Sub

3 Kommentare zu “Doppelte Einträge entfernen und Übereinstimmungen suchen”

  1. Paul sagt:

    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

  2. Eike sagt:

    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

  3. Paul sagt:

    Danke, jetzt hab ich es kapiert!

Kommentar schreiben

XHTML: Sie können diese Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>