Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten in anderer Tabelle suchen (VBA) und kopieren

Daten in anderer Tabelle suchen (VBA) und kopieren
31.03.2015 11:02:28
Staudigl
Hallo liebes Forum,
ich habe folgendes Problem und bin nicht unbedingt versiert im Umfang mit VBA. Grundkenntnisse sind da, aber ich komme nicht weiter:
Ich möchte in Arbeitsblatt 1 einen Button mit einem Makro versehen, dass folgendes auslöst:
Lese den Wert aus BU2 in Arbeitsblatt 2 aus und suche diesen in Arbeitsblatt 1 Spalte D. Wenn gefunden, dann kopiere den reinen Text aus Spalte K (Arbeitsblatt 1) in BU2 aus Arbeitsblatt 2. Wenn der Suchparameter nicht gefunden wird, dann soll nix passieren.
Das Ganze muss als Schleife für alle Zeilen einzeln ablaufen, sprich in BU2 anfangen bis zu BU1000.
Ich denke die Grundlogik müsste lauten:
For i=2 to 1000
If Suche=true Then Copy
Next i
Ich kann diese Logik aber leider nicht in Code ummünzen. Ich hab zwar das Buch "Excel-VBA für Dummies" vor mir, aber scheinbar bin ich noch nicht so weit ;-)
Danke für eure Hilfe.

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in anderer Tabelle suchen (VBA) und kopieren
31.03.2015 11:18:35
Alexander
Hallo Nino,
meinst du so etwas?
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
End If
Next k
Next i
End Sub
Gruß Alex

Anzeige
AW: Daten in anderer Tabelle suchen (VBA) und kopieren
31.03.2015 11:37:53
Staudigl
Hi Alexander,
vielen Dank für deine Hilfe.
Leider funktioniert es noch nicht einwandfrei. Er kopiert oftmals jetzt nicht den passenden Text rüber bzw. auch, wenn der Suchparameter nicht gefunden wurde. Wie kann ich das noch beheben?
Er soll den Text rüber kopieren, den er in Spalte K des Arbeitsblattes 2 findet, der in der Zeile steht, in der er den Suchparameter gefunden hat. Sprich: Wert aus BU5 (Arbeitsblatt 1) findet er in Zeile 37 Spalte D. Dann soll er Spalte K Zeile 37 in BU5 kopieren. Wenn er einen Parameter gar nicht finden konnte, soll er einfach nix machen und die BU-Zeile so lassen wie davor.
Hoffe, das ist verständlich genug.

Anzeige
AW: Daten in anderer Tabelle suchen (VBA) und kopieren
31.03.2015 11:53:37
Alexander
Hallo,
habe ich dich richtig verstanden?
Gesucht wird der Wert aus Spalte BU Arbeitsblatt 1 in Spalte D Arbeitsblatt 1,
ausgegeben wird der Wert in der gleichen Zeile wo der Wert ins BU stand aber in Spalte K Arbeitsblatt 2
Gruß Alex

AW: Daten in anderer Tabelle suchen (VBA) und kopieren
31.03.2015 12:20:06
Staudigl
Hi,
nein nicht ganz.
Ein Beispiel:
Arbeitsblatt 2 Spalte BU Zeile 6. Dieser Wert wird gesucht in der kompletten Arbeitsblatt 1 Spalte D.
Wenn der Wert zum Beispiel in Zeile 29 gefunden wird, wird der Wert aus Arbeitsblatt 1 Spalte K Zeile 29 kopiert und in Arbeitsblatt 2 Spalte BU Zeile 6 eingefügt.
Finder er den Wert nicht, passiert nix und die nächste Zeile (hier also Zeile 7) wird abgeglichen. Usw.
Danke für deine Mühe!

Anzeige
AW: Daten in anderer Tabelle suchen (VBA) und kopieren
31.03.2015 12:31:38
Alexander
Hallo,
Ich hoffe es klappt jetzt
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
Gruß
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  3. 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
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Füge einen Button hinzu, um das Makro auszuführen:

    • Gehe zu Entwicklertools > Einfügen > Button.
  6. 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

  1. Beispiel 1: Du hast in Arbeitsblatt 2 in BU5 einen Wert und suchst diesen in Spalte D von Arbeitsblatt 1.
  2. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige