For Schleife in Excel: Suche in 2 Tabellen mit VBA
Schritt-für-Schritt-Anleitung
Um eine For Schleife in VBA zu implementieren, die nach übereinstimmenden Worten in zwei Tabellen sucht und eine neue Tabelle mit den entsprechenden Daten erstellt, folge diesen Schritten:
-
Öffne Excel und gehe zum VBA-Editor, indem Du ALT + F11
drückst.
-
Füge ein neues Modul hinzu: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt, wähle Einfügen
und dann Modul
.
-
Kopiere den folgenden Code in das Modul:
Sub Vergleich()
Dim t1 As ListObject
Dim t2 As ListObject
Dim t3 As ListObject
Dim R1 As ListRow
Dim R2 As ListRow
Set t1 = Range("Tabelle1").Parent.ListObjects("Tabelle1") ' auf Name der Tabelle anpassen
Set t2 = Range("Tabelle2").Parent.ListObjects("Tabelle2") ' auf Name der Tabelle anpassen
Set t3 = Range("Tabelle3").Parent.ListObjects("Tabelle3") ' auf Name der Tabelle anpassen
' Ziel-Tabelle vorher leeren, falls erwünscht
t3.DataBodyRange.Delete
' prüfen und übertragen
For Each R1 In t1.ListRows
For Each R2 In t2.ListRows
If R1.Range.Cells(1).Value = R2.Range.Cells(1).Value Then
With t3.ListRows.Add
.Range.Cells(1) = R1.Range.Cells(1)
.Range.Cells(2) = R1.Range.Cells(2)
.Range.Cells(3) = R2.Range.Cells(1)
.Range.Cells(4) = R2.Range.Cells(2)
End With
End If
Next
Next
End Sub
-
Passe die Tabellennamen an, falls deine Tabellen anders heißen.
-
Führe das Makro aus: Gehe zurück zu Excel, drücke ALT + F8
, wähle Vergleich
aus und klicke auf Ausführen
.
Häufige Fehler und Lösungen
- Fehlermeldung: „Objekt nicht gefunden“: Stelle sicher, dass die Tabellen korrekt benannt sind und die entsprechenden Bereiche definiert wurden.
- Leere Ziel-Tabelle: Überprüfe, ob die Ziel-Tabelle (
Tabelle3
) existiert und nicht ausgeblendet ist.
- Keine Übereinstimmungen gefunden: Vergewissere Dich, dass die gesuchten Worte genau übereinstimmen (Groß-/Kleinschreibung beachten).
Alternative Methoden
Wenn Du mit VBA nicht vertraut bist, kannst Du auch Power Query verwenden, um die gleichen Daten zu verarbeiten:
- Daten in Power Query importieren: Gehe zu
Daten > Abfragen und Verbindungen > Abfrage erstellen
.
- Beide Tabellen laden und einen Join der Tabellen durchführen.
- Die Ergebnisse als neue Tabelle ausgeben.
Weitere Informationen findest Du hier.
Praktische Beispiele
Angenommen, Du hast folgende Daten:
Tabelle1 |
Worte |
Beschreibung |
Apfel |
Frucht |
Banane |
Frucht |
Tabelle2 |
Worte |
Kategorie |
Apfel |
Obst |
Kiwi |
Obst |
Nach Ausführung des VBA-Codes wird Tabelle3 wie folgt aussehen:
Worte |
Beschreibung |
Worte |
Kategorie |
Apfel |
Frucht |
Apfel |
Obst |
Tipps für Profis
- Verwende Fehlerbehandlung im VBA-Code, um mögliche Laufzeitfehler besser zu handhaben.
- Optimierung der Schleifen: Wenn Du mit größeren Datenmengen arbeitest, prüfe, ob Du die Schleifen effizient gestalten kannst, z.B. durch Verwendung von Dictionaries.
- Dokumentation: Kommentiere Deinen Code gut, damit Du und andere ihn leichter verstehen.
FAQ: Häufige Fragen
1. Muss ich VBA aktivieren?
Ja, Du musst sicherstellen, dass Makros in Excel aktiviert sind, um das VBA-Skript ausführen zu können.
2. Kann ich die Tabellen formatieren?
Ja, Du kannst die Formatierung der Zellen in Tabelle3
nach dem Erstellen anpassen, entweder manuell oder durch zusätzlichen VBA-Code.
3. Funktioniert der Code in Excel Online?
VBA funktioniert nur in Desktopversionen von Excel, nicht in Excel Online oder Mac-Versionen, die keine VBA-Unterstützung bieten.