Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Einträge in zwei Spalten mit VBA vergleichen

Einträge in zwei Spalten mit VBA vergleichen
03.06.2015 10:57:56
neptunhiker
Hallo,
ich würde gerne Einträge in zwei Spalten auf Gleichheit mit VBA überprüfen. Als Beispiel: Spalte A enthält 200 Zellen mit Zufallszahlen (bspw. =ZUFALLSBEREICH(1;50)) und Spalte B enthält 240 Zellen mit Zufallszahlen (bspw. ebenso =ZUFALLSBEREICH(1;50)). Jetzt würde ich gerne mit VBA ein Makro schreiben, dass die beiden Spalten durchgeht und im Ergebnis anzeigt, wie viele Werte in Spalte A auch in Spalte B zu finden sind. Dazu habe ich zwei Ideen, die aber mit meinen realen Daten (mehr als 30.000 Einträge pro Spalte) wahrscheinlich zu langsam wären:
1.) über die worksheetfunction sverweis (also vlookup)
2.) mit einer Schleife, die einfach nach und nach jeden Eintrag in Spalte A durchgeht und überprüft, ob ein solcher auch in Spalte B besteht. Falls ja, dann counter=counter+1, also einfach einen Zähler erhöhen.
Wie gesagt, beide Varianten sind sehr langsam. Gibt es vielleicht eine bessere Lösung. Vielen Dank schon mal. Ich freue mich auf Ideen.
Viele Grüße

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einträge in zwei Spalten mit VBA vergleichen
03.06.2015 11:18:31
Rudi
Hallo,
Duplikate in A/B auch mehrfach zählen?
Gruß
Rudi

AW: Einträge in zwei Spalten mit VBA vergleichen
03.06.2015 11:31:47
neptunhiker
Hallo Rudi,
vielen Dank für die gute Nachfrage. Du hast vollkommen recht, denn bei ZUFALLSBEREICH(1;50) wird es viele Duplikate geben. In meiner Originaldatei wird es in den Spalten jeden Wert jeweils nur einmal geben, daher ist die Duplikateproblematik für mich letztlich nicht relevant. Grundsätzlich geht es mir ja nur darum, herauszufinden, ob ein Wert in A auch in B besteht. In diesem Sinne müssten auch Duplikate nicht mehrfach gezählt werden.
Viele Grüße

Anzeige
AW: Einträge in zwei Spalten mit VBA vergleichen
03.06.2015 12:54:55
Rudi
Hallo,
Sub aaa()
Dim arrA, arrB, i As Long, oDic As Object, c As Long
arrA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
arrB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
Set oDic = CreateObject("scripting.dictionary")
For i = 1 To UBound(arrB)
oDic(arrB(i, 1)) = 0
Next
For i = 1 To UBound(arrA)
If oDic.exists(arrA(i, 1)) Then c = c + 1
Next
MsgBox c
End Sub

Gruß
Rudi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Einträge in zwei Spalten mit VBA vergleichen


Schritt-für-Schritt-Anleitung

Um Einträge in zwei Spalten mit VBA zu vergleichen, kannst du das folgende Makro verwenden. Es überprüft, wie viele Werte aus Spalte A auch in Spalte B vorhanden sind.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub EintraegeVergleichen()
       Dim arrA, arrB, i As Long, oDic As Object, c As Long
       arrA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
       arrB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
       Set oDic = CreateObject("scripting.dictionary")
       For i = 1 To UBound(arrB)
           oDic(arrB(i, 1)) = 0
       Next
       For i = 1 To UBound(arrA)
           If oDic.exists(arrA(i, 1)) Then c = c + 1
       Next
       MsgBox c
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro EintraegeVergleichen auswählst und auf Ausführen klickst.

Dieses Makro verwendet ein Dictionary-Objekt, um die Werte in Spalte B schnell zu speichern und dann die Werte in Spalte A zu überprüfen. Dies ist eine effiziente Methode, um die vba zellen vergleichen Funktionalität zu nutzen.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt."

    • Stelle sicher, dass die Spalten korrekt ausgewählt sind und dass die Daten in Spalte A und B vorhanden sind.
  • Fehler: "Typen unverträglich."

    • Überprüfe, ob die Daten in beiden Spalten vom gleichen Datentyp sind (z.B. beide Zahlen oder beide Text).

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch Excel-Funktionen nutzen, um die Werte zu vergleichen. Eine Möglichkeit ist die Verwendung von VERGLEICH oder WVERWEIS (VLOOKUP):

  • Verwende die Funktion =WENN(ISTFEHLER(VERGLEICH(A1;B:B;0));"Nicht gefunden";"Gefunden"), um zu überprüfen, ob ein Wert in Spalte A in Spalte B vorhanden ist.

Praktische Beispiele

Angenommen, Spalte A enthält folgende Werte: 1, 2, 3, 4, 5 und Spalte B: 3, 4, 5, 6, 7. Wenn du das Makro ausführst, wird in einer Meldung angezeigt, dass drei Werte aus Spalte A auch in Spalte B vorhanden sind.


Tipps für Profis

  • Optimierung: Für große Datenmengen kann das Verwenden von Arrays und Dictionary-Objekten die Geschwindigkeit erheblich erhöhen.
  • Fehlerbehandlung: Füge Error-Handling in dein VBA-Skript ein, um unerwartete Fehler abzufangen und benutzerfreundliche Meldungen anzuzeigen.

FAQ: Häufige Fragen

1. Kann ich das Makro anpassen, um Duplikate zu zählen?
Ja, du kannst den Zähler c anpassen, um Duplikate zu berücksichtigen, indem du eine zusätzliche Schleife einfügst, um alle Vorkommen zu zählen.

2. Funktioniert dieses Makro in Excel 365?
Ja, das Makro ist mit Excel 365 sowie anderen Versionen kompatibel, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige