Daten in einer anderen Excel-Tabelle suchen und kopieren mit VBA
Schritt-für-Schritt-Anleitung
Um einen Wert in einer anderen Tabelle zu suchen und diesen zu kopieren, kannst Du folgendes VBA-Skript verwenden. Dieses Skript sucht den Wert in einer definierten Spalte und überträgt den entsprechenden Text aus einer anderen Spalte.
-
Öffne Excel und drücke ALT
+ F11
, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Klicke auf
Einfügen
> Modul
.
-
Kopiere und füge den folgenden Code ein:
Sub suche()
Dim i As Long
Dim k As Long
For i = 2 To 1000
For k = 2 To 1000
If Sheets(2).Cells(i, 73).Value = Sheets(1).Cells(k, 4).Value Then
Sheets(2).Cells(i, 73).Value = Sheets(1).Cells(k, 11).Value
GoTo gefunden
End If
Next k
gefunden:
Next i
End Sub
-
Schließe den VBA-Editor und gehe zurück zu Excel.
-
Füge einen Button hinzu, um das Makro auszuführen:
- Gehe zu
Entwicklertools
> Einfügen
> Button
.
-
Wähle das Makro suche
aus, um es mit dem Button zu verknüpfen.
Jetzt wird das Makro den Wert in Spalte BU von Arbeitsblatt 2 suchen und, falls gefunden, den entsprechenden Text aus Spalte K von Arbeitsblatt 1 übernehmen.
Häufige Fehler und Lösungen
-
Problem: Das Skript kopiert nicht den richtigen Wert.
- Lösung: Stelle sicher, dass Du die richtigen Spalten und Zeilen im Code angegeben hast. Die Indizes für die Spalten müssen mit Deinem Arbeitsblatt übereinstimmen.
-
Problem: Das Makro findet keine Werte.
- Lösung: Überprüfe, ob die Werte, die Du suchst, in der richtigen Formatierung vorliegen (z.B. keine führenden Leerzeichen).
-
Problem: Das Skript läuft nicht.
- Lösung: Stelle sicher, dass Makros in Deiner Excel-Anwendung aktiviert sind und dass Du das richtige Arbeitsblatt ausgewählt hast.
Alternative Methoden
Falls Du nicht mit VBA arbeiten möchtest, kannst Du auch die SVERWEIS-Funktion verwenden, um Werte aus einer anderen Tabelle zu suchen und zu übernehmen. Beispiel:
=SVERWEIS(BU2; 'Arbeitsblatt1'!D:K; 8; FALSCH)
Diese Funktion sucht den Wert in BU2
in der Spalte D des Arbeitsblatts 1 und gibt den Wert aus Spalte K zurück.
Praktische Beispiele
- Beispiel 1: Du hast in Arbeitsblatt 2 in
BU5
einen Wert und suchst diesen in Spalte D von Arbeitsblatt 1.
- Beispiel 2: Du möchtest mehrere Werte in Spalte BU von Arbeitsblatt 2 überprüfen und die entsprechenden Texte aus Spalte K von Arbeitsblatt 1 auslesen.
Das VBA-Skript oben erfüllt genau diese Anforderungen, indem es die Schleife für jede Zeile durchläuft und den jeweiligen Wert sucht.
Tipps für Profis
- Optimierung der Schleifen: Um die Suche zu beschleunigen, kannst Du die Schleifen so anpassen, dass sie nur bis zur letzten gefüllten Zeile laufen.
- Fehlerbehandlung: Implementiere Fehlerbehandlung im VBA-Code, um mögliche Laufzeitfehler zu vermeiden.
- Verwendung von
Option Explicit
: Dies zwingt dich dazu, alle Variablen zu deklarieren, was die Fehlersuche erleichtert.
FAQ: Häufige Fragen
1. Wie kann ich das Makro anpassen, um nur bestimmte Zeilen zu durchsuchen?
Du kannst die Schleifenbedingungen ändern, um nur die Zeilen zu durchsuchen, die Du benötigst, z.B. For i = 2 To 500
.
2. Was ist, wenn ich mehrere Werte gleichzeitig suchen möchte?
Du kannst das Skript erweitern, indem Du weitere Schleifen hinzufügst, oder indem Du eine Array-Variable verwendest, um mehrere Suchwerte zu speichern und zu verarbeiten.
3. Wie kann ich sicherstellen, dass die Suche in der richtigen Excel-Version funktioniert?
Das obige Skript sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren, solange die VBA-Funktionalität aktiviert ist.