Zellen vergleichen und bei Übereinstimmung kopieren
Schritt-für-Schritt-Anleitung
Um in Excel Zellen zu vergleichen und bei Übereinstimmung Inhalte zu kopieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code sucht in zwei Tabellenblättern nach übereinstimmenden Werten und kopiert die entsprechenden Zeileninhalte.
-
Öffne die Excel-Datei mit den beiden Tabellenblättern „Bibliothek“ und „Station 000“.
-
Drücke Alt + F11
, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Klicke mit der rechten Maustaste im Projektfenster auf „VBAProject (DeineDatei.xlsx)“.
- Wähle „Einfügen“ > „Modul“.
-
Kopiere den folgenden VBA-Code in das neue Modul:
Sub vergleichen()
Dim varStation As Variant, varRet As Variant
Dim lngI As Long
On Error GoTo ErrorHandler
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlManual
End With
With Sheets("Station 000")
varStation = .Range("B2:C" & Application.Max(2, .Cells(.Rows.Count, 2).End(xlUp).Row))
For lngI = 1 To UBound(varStation, 1)
varRet = Application.Match(varStation(lngI, 1), Sheets("Bibliothek").Columns(2), 0)
If IsNumeric(varRet) Then
If varStation(lngI, 2) = Sheets("Bibliothek").Cells(varRet, 3) Then
.Range(.Cells(lngI + 1, 4), .Cells(lngI + 1, 11)).Copy Sheets("Bibliothek").Cells(varRet, 4)
End If
End If
Next
End With
ErrorHandler:
With Err
If .Number <> 0 Then
MsgBox "Fehler in Prozedur: 'vergleichen'. Fehlernummer: " & .Number & " Beschreibung: " & .Description
End If
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlAutomatic
End With
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Starte das Makro:
- Drücke
Alt + F8
, wähle „vergleichen“ und klicke auf „Ausführen“.
Häufige Fehler und Lösungen
-
Fehler in Prozedur:
- Wenn Du die Meldung „Fehler in Prozedur: 'vergleichen'“ erhältst, könnte dies auf einen Typfehler hinweisen. Überprüfe die Zellenformate in beiden Tabellenblättern.
-
Typen unverträglich:
- Dieser Fehler tritt auf, wenn die Daten in den Zellen nicht kompatibel sind. Achte darauf, dass die verglichenen Zellen den gleichen Datentyp haben (z.B. beide als Text oder beide als Zahl).
Alternative Methoden
Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch die SVERWEIS-Funktion verwenden, um Zellen zu vergleichen und Inhalte zu kopieren. Hier ist ein einfaches Beispiel:
-
Gehe zu „Station 000“ und wähle Zelle E2
.
-
Gib die folgende Formel ein:
=WENN(ISTFEHLER(SVERWEIS(B2;Bibliothek!B:C;2;FALSCH));"";SVERWEIS(B2;Bibliothek!B:C;2;FALSCH))
-
Ziehe die Formel nach unten, um sie auf die anderen Zeilen anzuwenden.
Praktische Beispiele
Angenommen, Du hast in „Station 000“ in Spalte B Produktnummern und in Spalte D die Produktnamen. In „Bibliothek“ sind die entsprechenden Informationen in den Spalten B (Nummer) und C (Name) sowie E bis K (weitere Informationen) gespeichert. Der oben gezeigte VBA-Code sucht nach Übereinstimmungen und kopiert die Daten von „Bibliothek“ nach „Station 000“, wenn die Bedingungen erfüllt sind.
Tipps für Profis
- Debugging: Nutze
Debug.Print
im Code, um die Werte von Variablen während der Ausführung zu überprüfen.
- Optimierung: Aktiviere
ScreenUpdating
und EnableEvents
nur, wenn nötig, um die Performance zu steigern.
- Verwendung von Arrays: Arbeite mit Arrays, um die Verarbeitungsgeschwindigkeit zu erhöhen, besonders bei großen Datenmengen.
FAQ: Häufige Fragen
1. Wie kann ich den Code anpassen, um andere Spalten zu vergleichen?
Du kannst die Spaltenreferenzen im Code ändern, um andere Spalten zu vergleichen und zu kopieren, indem Du die Zahlen in .Cells(lngI + 1, X)
anpasst.
2. Funktioniert dieser Code in jeder Excel-Version?
Ja, der Code sollte in allen modernen Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010, 2013, 2016, 2019 und Microsoft 365.
3. Kann ich den Code für mehr als zwei Tabellenblätter verwenden?
Ja, Du kannst den Code erweitern, um zusätzliche Tabellenblätter hinzuzufügen, indem Du weitere Sheets()
-Referenzen und Schleifen implementierst.
4. Was tun, wenn es keine Übereinstimmungen gibt?
Der Code ist so eingerichtet, dass er keine Aktion ausführt, wenn keine Übereinstimmungen gefunden werden. Du kannst eine Nachricht hinzufügen, die Du bei fehlenden Übereinstimmungen anzeigen möchtest.