Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA vergleich zwei Tabellen und kopieren

VBA vergleich zwei Tabellen und kopieren
11.03.2020 09:52:43
Martin
Hallo zusammen,
ich stehe vor einem problem.
bin dran an einer Datei mit zwei Tabellenblätter. (Tabelle 1 und Tabelle 2)
Ich möchte bei Tabelle 1, Spalte A einen Wert eingeben und dieser sollte
dann in Tabelle 2 Spalte A gesucht werden. (Gleich nach der Eingabe des Wertes, mit Enter bestätigt)
Bei Übereinstimmung soll die Zeile kopiert werden
und in Tabelle 1 beim gesuchten Wert ab Spalte B (nach rechts) eingefügt werden.
(Ja mit Sverweis könnte es auch funktionieren sind aber zuviele Datenabfragen)
Die Tabelle 1, Spalte A, können unterschiedliche Anzahl Zeilenwerte haben. (einmal sollen 3 Werte abgefragt werden und dann wieder 5 Werte)
Ich hoffe es kann mir jemand dabei helfen.
Vielen Dank schon im Voraus.
https://www.herber.de/bbs/user/135762.xlsx
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA vergleich zwei Tabellen und kopieren
11.03.2020 10:24:08
UweD
Hallo
- Rechtsclick auf den Tabellenblattreiter von Tabelle1
- Code anzeigen
- Code rechts reinkopieren
Private Sub Worksheet_Change(ByVal Target As Range)

    On Error GoTo Fehler
    Dim Tb2 As Worksheet, ZE As Integer, Z
    Const APPNAME = "Worksheet_Change"

    Set Tb2 = Sheets("Tabelle2")
    ZE = 4 ' Erste Datenzeile 

    If Not Intersect(Range("A:A"), Target) Is Nothing Then
        If Target.Row >= ZE Then
            For Each Z In Intersect(Range("A:A"), Target)
                With Z.Offset(0, 1).Resize(1, 3)
                    Application.EnableEvents = False
                    .FormulaR1C1 = "=IFERROR(VLOOKUP(RC1," & Tb2.Name & "!C1:C4,COLUMN(),0),"""")"
                    .Value = .Value
                    Application.EnableEvents = True
                End With
            Next
        End If
    End If

    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
        & "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
AW: VBA vergleich zwei Tabellen und kopieren
11.03.2020 13:06:30
Martin
Hallo UweD
Ich danke dir für dein Code. Der funktioniert hervorragend.
Jetzt hätte ich noch eine weitere Frage:
Welchen Wert muss ich ändern wenn in Tabelle2 weitere Spalten dazukommen?
Ist es möglich eine Abfrage zu starten, wenn in Tabelle1 Zelle M1 den Wert "Morgen" hat dann die
Suche auf das Tabellenblatt "Morgen" zu beziehen?
Und wenn in Tabelle1 Zelle M1 den Wert "Abend" hat dann die Suche auf das Tabellenblatt "Abend" zu beziehen?
Anzeige
AW: VBA vergleich zwei Tabellen und kopieren
12.03.2020 07:43:50
Martin
zuätzliche Frage...
AW: VBA vergleich zwei Tabellen und kopieren
11.03.2020 12:14:42
Martin
Danke für eure schnelle Antwort. werde dies nächstens so versuchen und mich gegebenfalls nochmals melden...
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA zur Automatisierung des Excel Vergleichs zweier Tabellen


Schritt-für-Schritt-Anleitung

Um den Excel Vergleich zweier Tabellen mithilfe von VBA zu automatisieren, folge diesen Schritten:

  1. Öffne deine Excel-Datei und gehe zu dem Tabellenblatt, das du verwenden möchtest (z.B. Tabelle1).

  2. Rechtsklicke auf den Tabellenblattreiter von Tabelle1 und wähle „Code anzeigen“.

  3. Kopiere den folgenden VBA-Code in das Code-Fenster:

    Private Sub Worksheet_Change(ByVal Target As Range)
        On Error GoTo Fehler
        Dim Tb2 As Worksheet, ZE As Integer, Z
        Const APPNAME = "Worksheet_Change"
    
        Set Tb2 = Sheets("Tabelle2")
        ZE = 4 ' Erste Datenzeile 
    
        If Not Intersect(Range("A:A"), Target) Is Nothing Then
            If Target.Row >= ZE Then
                For Each Z In Intersect(Range("A:A"), Target)
                    With Z.Offset(0, 1).Resize(1, 3)
                        Application.EnableEvents = False
                        .FormulaR1C1 = "=IFERROR(VLOOKUP(RC1," & Tb2.Name & "!C1:C4,COLUMN(),0),"""")"
                        .Value = .Value
                        Application.EnableEvents = True
                    End With
                Next
            End If
        End If
    
        ' Fehlerbehandlung 
        Err.Clear
    Fehler:
        Application.EnableEvents = True
        If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """ Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
    End Sub
  4. Schließe den VBA-Editor und teste die Funktion, indem du in Tabelle1 einen Wert in Spalte A eingibst und mit Enter bestätigst. Der Code sucht in Tabelle2 nach dem eingegebenen Wert und kopiert die entsprechende Zeile.


Häufige Fehler und Lösungen

  • Fehler: „Fehler in Sub“

    • Lösung: Überprüfe, ob die Tabellenblätter korrekt benannt sind. Achte darauf, dass die Namen „Tabelle1“ und „Tabelle2“ übereinstimmen.
  • Keine Übereinstimmung gefunden.

    • Lösung: Stelle sicher, dass die Werte in Spalte A von Tabelle2 vorhanden sind und dass keine Leerzeichen oder Tippfehler vorliegen.

Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du auch die SVERWEIS-Funktion ausprobieren. Dabei gilt:

  1. In Tabelle1, Spalte B könntest du die Formel verwenden:
    =SVERWEIS(A1;Tabelle2!A:C;2;FALSCH)
  2. Diese Formel sucht den Wert in A1 von Tabelle1 in der ersten Spalte von Tabelle2 und gibt den Wert aus der zweiten Spalte zurück.

Praktische Beispiele

  • Beispiel für den Vergleich zweier Tabellen:

    • Wenn in Tabelle1, Spalte A „ABC“ steht und in Tabelle2, Spalte A „ABC“ auch vorhanden ist, wird die entsprechende Zeile aus Tabelle2 nach Tabelle1 in die Spalten B, C usw. kopiert.
  • Dynamische Abfrage:

    • Wenn du möchtest, dass die Suche von dem Wert in Zelle M1 abhängt, kannst du den Code entsprechend anpassen, um die Daten aus dem Blatt „Morgen“ oder „Abend“ zu beziehen.

Tipps für Profis

  • Verwende Datenüberprüfung in Tabelle1, um sicherzustellen, dass nur gültige Werte eingegeben werden.
  • Optimierung der Formel zur Minimierung der Berechnungszeit, indem du nur die benötigten Bereiche in der VLOOKUP-Funktion angibst.
  • Verwende Error Handling, um unerwartete Fehler abzufangen und zu beheben.

FAQ: Häufige Fragen

1. Wie kann ich den Bereich für die VLOOKUP-Funktion anpassen? Du kannst den Bereich anpassen, indem du die C1:C4-Angabe in der Formel im VBA-Code zu deinem gewünschten Bereich änderst.

2. Ist es möglich, mehrere Tabellen für die Suche zu nutzen? Ja, du kannst die Logik im VBA-Code anpassen, um mehrere Tabellenblätter abzufragen, basierend auf dem Wert in einer bestimmten Zelle.

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