Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Wenn a2 Tabelle 1 = a2 Tabelle 2 dann...

Forumthread: VBA Wenn a2 Tabelle 1 = a2 Tabelle 2 dann...

VBA Wenn a2 Tabelle 1 = a2 Tabelle 2 dann...
19.05.2016 16:33:27
Simon
Hallo,
ich versuche mein Problem so gut es geht zu beschreiben:
Ich möchte zwei Tabellen in einem Workbook vergleichen.
Wenn die Zelle A2 in Tabelle 1 den selben Wert hat wie A2 in Tabelle 2, dann soll z.B. D2 der Tabelle 2 in B2 in Tabelle 1 kopiert werden. Wenn dies nicht der Fall sein sollte soll in einer Schleife geschaut werden ob Zelle A2 von Tabelle 1 den selben Wert hat wie A3(!!) in Tabelle 2 usw und das beste so dynamisch, dass alle Werte von A in Tabelle 1 mit allen Werten von A in Tabelle 2 verglichen werden.
Ich hoffe, ihr könnt mir weiterhelfen, da ich in VBA noch ein blutiger Anfänger bin.
Vielen Dank!

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Wenn a2 Tabelle 1 = a2 Tabelle 2 dann...
19.05.2016 17:40:10
Nepumuk
Hallo,
teste mal:
Option Explicit

Public Sub Match()
    Dim ialngIndex As Long
    Dim avntValues As Variant
    Dim objCell As Range
    With Worksheets("Tabelle1")
        avntValues = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
    End With
    With Worksheets("Tabelle2")
        For ialngIndex = 2 To UBound(avntValues)
            Set objCell = .Columns(1).Find(What:=avntValues(ialngIndex, 1), _
                LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
            If Not objCell Is Nothing Then
                Worksheets("Tabelle1").Cells(ialngIndex, 2).Value = objCell.Offset(0, 3).Value
                Set objCell = Nothing
            End If
        Next
    End With
End Sub

Die Tabellennamen musst du gegebenenfalls anpassen.
Gruß
Nepumuk
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA: Tabellen vergleichen und Daten kopieren


Schritt-für-Schritt-Anleitung

Um zwei Tabellen in einem Excel-Workbook zu vergleichen und bestimmte Daten zu kopieren, kannst Du den folgenden VBA-Code verwenden:

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

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Option Explicit
    
    Public Sub Match()
       Dim ialngIndex As Long
       Dim avntValues As Variant
       Dim objCell As Range
    
       With Worksheets("Tabelle1")
           avntValues = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
       End With
    
       With Worksheets("Tabelle2")
           For ialngIndex = 2 To UBound(avntValues)
               Set objCell = .Columns(1).Find(What:=avntValues(ialngIndex, 1), _
                                               LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
               If Not objCell Is Nothing Then
                   Worksheets("Tabelle1").Cells(ialngIndex, 2).Value = objCell.Offset(0, 3).Value
                   Set objCell = Nothing
               End If
           Next
       End With
    End Sub
  4. Passe die Tabellennamen "Tabelle1" und "Tabelle2" gegebenenfalls an.

  5. Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable nicht festgelegt"
    Lösung: Stelle sicher, dass die Tabellennamen korrekt sind und die Daten in der richtigen Spalte stehen.

  • Fehler: "Find-Methode kann nicht auf Range angewendet werden"
    Lösung: Überprüfe, ob die Zellen, die Du suchst, tatsächlich Werte enthalten und nicht leer sind.

  • Fehler: Nichts passiert nach dem Ausführen des Makros
    Lösung: Vergewissere Dich, dass die Zellen in Tabelle 1 und Tabelle 2 die erwarteten Werte enthalten und dass die Schleife korrekt durchlaufen wird.


Alternative Methoden

Wenn Du keine VBA-Programmierung verwenden möchtest, kannst Du auch Formeln oder bedingte Formatierungen nutzen, um Daten zwischen Tabellen zu vergleichen. Eine Möglichkeit ist die Verwendung von SVERWEIS():

=SVERWEIS(A2; Tabelle2!A:D; 4; FALSCH)

Diese Formel sucht den Wert in Zelle A2 von Tabelle 1 in der ersten Spalte von Tabelle 2 und gibt den Wert aus der vierten Spalte zurück.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den VBA-Code anpassen kannst:

  • Daten von einer Spalte in eine andere kopieren: Ändere Offset(0, 3) in Offset(0, 1), um den Wert aus der nächsten Spalte zu kopieren.
  • Vergleich von mehreren Zellen: Du kannst die Schleife erweitern, um nicht nur A2 zu A3, sondern auch A2 zu A4 usw. zu vergleichen, indem Du die For-Schleife anpasst.

Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang des Makros, um die Bildschirmaktualisierung zu deaktivieren und die Ausführung zu beschleunigen. Vergiss nicht, es am Ende wieder auf True zu setzen.

  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler frühzeitig zu erkennen.

  • Kommentiere Deinen Code ausführlich, um später leichter Änderungen vornehmen zu können.


FAQ: Häufige Fragen

1. Kann ich mehrere Tabellen gleichzeitig vergleichen?
Ja, Du kannst den Code anpassen, um mehrere Tabellen zu durchlaufen, indem Du zusätzliche Schleifen hinzufügst.

2. Funktioniert dieser Code in Excel 2016 und älteren Versionen?
Ja, der VBA-Code ist kompatibel mit Excel 2016 und den meisten älteren Versionen. Stelle sicher, dass die VBA-Einstellungen aktiviert sind.

3. Was ist, wenn ich mehr als zwei Tabellen vergleichen möchte?
Du kannst den Code erweitern, indem Du weitere With-Blöcke hinzufügst, die auf die zusätzlichen Tabellen verweisen.

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