VBA: Tabellen vergleichen und Daten kopieren
Schritt-für-Schritt-Anleitung
Um zwei Tabellen in einem Excel-Workbook zu vergleichen und bestimmte Daten zu kopieren, kannst Du den folgenden VBA-Code verwenden:
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Klicke auf Einfügen
und wähle Modul
, um ein neues Modul zu erstellen.
-
Füge den folgenden Code in das Modul ein:
Option Explicit
Public Sub Match()
Dim ialngIndex As Long
Dim avntValues As Variant
Dim objCell As Range
With Worksheets("Tabelle1")
avntValues = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
End With
With Worksheets("Tabelle2")
For ialngIndex = 2 To UBound(avntValues)
Set objCell = .Columns(1).Find(What:=avntValues(ialngIndex, 1), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If Not objCell Is Nothing Then
Worksheets("Tabelle1").Cells(ialngIndex, 2).Value = objCell.Offset(0, 3).Value
Set objCell = Nothing
End If
Next
End With
End Sub
-
Passe die Tabellennamen "Tabelle1" und "Tabelle2" gegebenenfalls an.
-
Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros
aus.
Häufige Fehler und Lösungen
-
Fehler: "Objektvariable nicht festgelegt"
Lösung: Stelle sicher, dass die Tabellennamen korrekt sind und die Daten in der richtigen Spalte stehen.
-
Fehler: "Find-Methode kann nicht auf Range angewendet werden"
Lösung: Überprüfe, ob die Zellen, die Du suchst, tatsächlich Werte enthalten und nicht leer sind.
-
Fehler: Nichts passiert nach dem Ausführen des Makros
Lösung: Vergewissere Dich, dass die Zellen in Tabelle 1 und Tabelle 2 die erwarteten Werte enthalten und dass die Schleife korrekt durchlaufen wird.
Alternative Methoden
Wenn Du keine VBA-Programmierung verwenden möchtest, kannst Du auch Formeln oder bedingte Formatierungen nutzen, um Daten zwischen Tabellen zu vergleichen. Eine Möglichkeit ist die Verwendung von SVERWEIS()
:
=SVERWEIS(A2; Tabelle2!A:D; 4; FALSCH)
Diese Formel sucht den Wert in Zelle A2 von Tabelle 1 in der ersten Spalte von Tabelle 2 und gibt den Wert aus der vierten Spalte zurück.
Praktische Beispiele
Hier sind einige praktische Beispiele, wie Du den VBA-Code anpassen kannst:
- Daten von einer Spalte in eine andere kopieren: Ändere
Offset(0, 3)
in Offset(0, 1)
, um den Wert aus der nächsten Spalte zu kopieren.
- Vergleich von mehreren Zellen: Du kannst die Schleife erweitern, um nicht nur A2 zu A3, sondern auch A2 zu A4 usw. zu vergleichen, indem Du die For-Schleife anpasst.
Tipps für Profis
-
Verwende Application.ScreenUpdating = False
am Anfang des Makros, um die Bildschirmaktualisierung zu deaktivieren und die Ausführung zu beschleunigen. Vergiss nicht, es am Ende wieder auf True
zu setzen.
-
Nutze Option Explicit
, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler frühzeitig zu erkennen.
-
Kommentiere Deinen Code ausführlich, um später leichter Änderungen vornehmen zu können.
FAQ: Häufige Fragen
1. Kann ich mehrere Tabellen gleichzeitig vergleichen?
Ja, Du kannst den Code anpassen, um mehrere Tabellen zu durchlaufen, indem Du zusätzliche Schleifen hinzufügst.
2. Funktioniert dieser Code in Excel 2016 und älteren Versionen?
Ja, der VBA-Code ist kompatibel mit Excel 2016 und den meisten älteren Versionen. Stelle sicher, dass die VBA-Einstellungen aktiviert sind.
3. Was ist, wenn ich mehr als zwei Tabellen vergleichen möchte?
Du kannst den Code erweitern, indem Du weitere With
-Blöcke hinzufügst, die auf die zusätzlichen Tabellen verweisen.