VBA Suchen, Finden und Eintragen in mehreren Spalten
Schritt-für-Schritt-Anleitung
Um Datensätze in Excel mithilfe von VBA zu suchen und zu finden, kannst du das folgende Makro verwenden. Es vergleicht die ersten drei Spalten zweier Listen und gleichsetzt die restlichen Spalten, wenn ein Datensatz gefunden wird. Falls nicht, wird der Datensatz in die nächste freie Zeile eingetragen.
- Öffne die Excel-Mappe, in der du das Makro verwenden möchtest.
- Gehe zu
Entwicklertools
> Visual Basic
.
- Erstelle ein neues Modul über
Einfügen
> Modul
.
- Kopiere den nachfolgenden Code und füge ihn in das Modul ein:
Sub Abgleich()
Dim wkb As Workbook
Dim wkb1 As Workbook
Dim wks As Worksheet
Dim wks1 As Worksheet
Workbooks.Open "Hier steht der Dateipfad"
Set wkb = Workbooks("Name der Datei")
Set wkb1 = ThisWorkbook
Set wks = wkb.Worksheets("Tabelle1") 'MASTERliste
Set wks1 = wkb1.Worksheets("Sheet1") 'Schülerliste
anz = wks.Cells(65536, 1).End(xlUp).Row
anz1 = wks1.Cells(65536, 1).End(xlUp).Row
For Z = 3 To anz1
suchwert = wks1.Range(Cells(Z, 1), Cells(Z, 3))
With wks.Range("A3:A" & anz)
Set C = .Find(suchwert, LookIn:=xlValues, LookAt:=xlWhole)
If Not C Is Nothing Then
For S = 1 To 11
wks.Cells(C.Row, S) = wks1.Cells(Z, S)
Next
Else
For S = 1 To 11
wks.Cells(anz + 1, S) = wks1.Cells(Z, S)
Next
anz = wks.Cells(65536, 1).End(xlUp).Row
End If
End With
Next
wkb.Save
wkb.Close
Application.ScreenUpdating = True
End Sub
- Ändere die Dateipfade und die Tabellennamen entsprechend deiner Daten.
- Führe das Makro aus, um den Abgleich durchzuführen.
Häufige Fehler und Lösungen
Alternative Methoden
Ein alternativer Ansatz ist die Verwendung von Arrays
, um die Daten in einem schnellen und effizienten Verfahren abzugleichen:
Public Sub abgleich()
Dim wkb As Workbook
Dim wks As Worksheet
Dim wks1 As Worksheet
Dim lRow As Long
Dim rng As Range
Set wkb = Workbooks.Open("Pfad zur Datei")
Set wks = wkb.Sheets("Tabelle1")
Set wks1 = ThisWorkbook.Sheets("Tabelle2")
lRow = wks.Cells(wks.Rows.Count, 1).End(xlUp).Row
Set rng = wks.Range("A1:A" & lRow)
Dim dataArr As Variant
dataArr = rng.Value
' Hier folgt der Vergleich und das Einfügen der Daten
End Sub
Praktische Beispiele
Hier ist ein Beispiel, wie du zwei Excel-Tabellen abgleichen kannst:
-
Tabelle1 (Masterliste): |
A |
B |
C |
D |
ID1 |
Name1 |
20 |
... |
ID2 |
Name2 |
25 |
... |
-
Tabelle2 (Schülerliste): |
A |
B |
C |
D |
ID1 |
Name1 |
21 |
... |
ID3 |
Name3 |
30 |
... |
Nach dem Ausführen des Makros werden die Einträge in Tabelle1 aktualisiert oder neue Einträge aus Tabelle2 hinzugefügt.
Tipps für Profis
- Verwende
Application.ScreenUpdating = False
, um die Bildschirmaktualisierung während des Makro-Laufs zu deaktivieren. Dies beschleunigt die Ausführung.
- Setze Fehlerbehandlungen ein, um Probleme während des Ablaufs zu vermeiden.
- Kommentiere deinen Code ausführlich, damit du die Logik später leichter nachvollziehen kannst.
FAQ: Häufige Fragen
1. Funktioniert das Makro in Excel 365?
Ja, das Makro sollte in Excel 365 und anderen Versionen von Excel funktionieren, die VBA unterstützen.
2. Wie kann ich das Makro anpassen, um mehr Spalten zu vergleichen?
Du kannst die Schleifen und den Suchbereich im Code anpassen, um die gewünschten Spalten zu vergleichen.
3. Was mache ich, wenn ich keine VBA-Kenntnisse habe?
Es ist empfehlenswert, sich zuerst mit den Grundlagen von VBA vertraut zu machen. Es gibt viele Online-Ressourcen und Tutorials, die dir helfen können.