Werte in anderen Tabellenblättern mit VBA suchen
Schritt-für-Schritt-Anleitung
Um Werte in anderen Tabellenblättern mit VBA zu suchen, kannst Du den folgenden Code verwenden. Dieser Code vergleicht Werte in einer bestimmten Spalte (z.B. Spalte B) des ersten Blattes mit Werten im zweiten Blatt und gibt die entsprechenden Werte in einer anderen Spalte zurück.
- Öffne den VBA-Editor: Drücke
ALT + F11
in Excel.
- Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle "Einfügen" > "Modul".
- Kopiere den Code: Füge den folgenden VBA-Code in das Modul ein.
Sub Tab_suche()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim rng1 As Range, rng2 As Range
Dim rng2_n_arr, rng2_w_arr As Variant
Dim num2 As Variant, rng2_num As String, rng2_Wert As String
Set sh1 = Sheets(1)
Set sh2 = Sheets(2)
Set rng1 = sh1.Range("B:B").SpecialCells(xlCellTypeConstants) 'zu suchende Nummern
Set rng2 = sh2.Range("B:B").SpecialCells(xlCellTypeConstants) 'findebereich
For Each num2 In rng2 'Werte in Datenobjekt schreiben
rng2_num = rng2_num & num2 & ","
rng2_Wert = rng2_Wert & num2.Offset(0, -1) & ","
Next
rng2_n_arr = Split(rng2_num, ",")
rng2_w_arr = Split(rng2_Wert, ",")
For Each num In rng1 'Suchbereich durchlaufen
For i = 0 To UBound(rng2_n_arr) - 1
If CStr(num) = rng2_n_arr(i) Then num.Offset(0, 2) = rng2_w_arr(i) 'Eintrag bei Übereinstimmung
Next i
Next num
End Sub
- Führe den Code aus: Drücke
F5
oder wähle "Run" > "Run Sub/UserForm".
Häufige Fehler und Lösungen
-
Fehler: Sub oder Function nicht definiert
Stelle sicher, dass der Befehl Split
korrekt geschrieben ist. Es muss Split
und nicht Splitt
heißen.
-
Fehler: Variablen nicht definiert
Du musst sicherstellen, dass alle Variablen, wie num2
, rng2_num
und rng2_Wert
, als Variant
definiert sind.
-
Excel läuft langsam
Wenn Excel zu langsam ist, kann dies an der Anzahl der Zeilen liegen. Überlege, die Daten in einem kleineren Bereich zu speichern oder die Berechnungsoptionen in Excel auf "manuell" zu setzen.
Alternative Methoden
Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die Funktionen VLOOKUP
oder INDEX
und MATCH
in Excel verwenden, um ähnliche Ergebnisse zu erzielen:
=IFERROR(VLOOKUP(B2, 'Tabelle2'!B:A, 2, FALSE), "")
Diese Formel sucht in der zweiten Tabelle nach dem Wert aus B2 und gibt den entsprechenden Wert aus Spalte A zurück.
Praktische Beispiele
Stellen wir uns vor, Du hast folgende Werte:
Tabelle 1 (Daten)
A |
B |
C |
D |
|
1234567890 |
|
|
|
0987654321 |
|
|
Tabelle 2 (Referenz)
A |
B |
Wert1 |
1234567890 |
Wert2 |
0987654321 |
Nach Ausführung des VBA-Codes wird die Tabelle 1 wie folgt aussehen:
A |
B |
C |
D |
|
1234567890 |
|
Wert1 |
|
0987654321 |
|
Wert2 |
Tipps für Profis
- Optimierung des Codes: Verwende
Application.ScreenUpdating = False
und Application.Calculation = xlCalculationManual
, um die Performance beim Ausführen von VBA zu verbessern.
- Fehlerbehandlung: Implementiere Fehlerbehandlungsroutine, um unerwartete Fehler während der Ausführung zu vermeiden.
FAQ: Häufige Fragen
1. Wie kann ich den Code anpassen, um mehrere Spalten zu durchsuchen?
Du kannst einfach weitere Schleifen hinzufügen, die den Code für die anderen Spalten wiederholen.
2. Was mache ich, wenn ich nicht mit VBA arbeiten möchte?
Nutze die oben genannten Excel-Funktionen wie VLOOKUP
, INDEX
oder MATCH
, um ähnliche Ergebnisse ohne VBA zu erzielen.