Live-Forum - Die aktuellen Beiträge
Datum
Titel
01.11.2025 21:11:38
01.11.2025 14:22:20
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: zwei Tabellen vergleichen - Unterschiede markieren

zwei Tabellen vergleichen - Unterschiede markieren
29.01.2020 11:32:48
Stefan
Hallo!
Ich habe ein VBA-Problem:
Meine Aufgabenstellung ist es die Datensätze zweier Arbeitsblätter miteinander zu vergleichen und sich unterscheidende Zellen farblich zu markieren. Außerdem soll eine Zeile mit sich unterscheidenden Daten in der letzten Spalte mit "ja" markiert werden. (Zusatzaufgabe: Zeilen ohne Änderung sollen ein "nein" erhalten.)
Dr. Google hat mich auf einen gut funktionierenden Code gebracht (siehe unten).
Dieser hat allerdings das Problem, dass die zu vergleichenden Datensätze wohl auf beiden Arbeitsblättern in derselben Zeile stehen müssen. Dies ist nun nicht immer der Fall. Deshalb ist das Codeergebnis falsch.
Mein Datenbestand ist so aufgebaut, dass die Spalte A einen eineindeutigen Schlüssel enthält. Diesen Schlüssel würde ich gerne benutzen, um die zu vergleichende Zeile zu ermitteln. Ich schaffe es leider nicht den Code dahingehend zu erweitern, dass die Vergleichsoperation über diesen Schlüsselwert die zu vergleichende Zeile sucht.
Könnt ihr mir dabei bitte helfen?!
Danke.
Hier der derzeitige Code:
-----------------
[code]
' Veränderungen zum Vorbestand markieren
sheetZuletzt = ThisWorkbook.Sheets("Stammdaten").Range("B2").Value
letzteSpalte = ThisWorkbook.Sheets(sheetJetzt).Range("A1").End(xlToRight).Column + 1
i = 0
With ThisWorkbook.Sheets(sheetJetzt)
lngLetzeS = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
lngLetzeZ = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
arrT1 = .Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS))
With ThisWorkbook.Sheets(sheetZuletzt)
arrT2 = .Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS))
End With
For i = 1 To lngLetzeZ
For j = 1 To lngLetzeS
'ThisWorkbook.Sheets(sheetJetzt).Cells(i, letzteSpalte).Value = "nein"
If arrT1(i, j) arrT2(i, j) Then
ThisWorkbook.Sheets(sheetJetzt).Cells(i, letzteSpalte).Value = "ja"
If Not rngBereich Is Nothing Then
Set rngBereich = Union(rngBereich, .Cells(i, j))
Else:
Set rngBereich = .Cells(i, j)
End If
End If
Next
Next
.Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS)).Interior.ColorIndex = xlColorIndexNone
If Not rngBereich Is Nothing Then rngBereich.Interior.ColorIndex = 6
End With
[/code]
-----------------
Liebe Grüße,
Stefan
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zwei Tabellen vergleichen - Unterschiede markieren
29.01.2020 18:30:00
Piet
Hallo Stefan
ich kann dir auf die schnelle eine Erweiterung für deinen Code anbieten, habe aber keine Zeit alles umzuschreiben. Um Dir die Arbeit zu erleichtern kann man die Tabelle Stammdaten mit Set definieren!
Du brauchst drei neue Variable für Suchtext, die Find Methode und zr für die gefundene Zeile. Dann kannst du in der For i Schleife zuerst nach der Ident Nummer in Spalte A suchen, und startest dann die For i Schleife erst wenn die ID-Nr. gefunden wurde. Bei der For i Schleife must du aber "zr" als Bezugszeile nehmen, nicht Cells(i), sondern Cells(zr, xxx)!
mfg Piet
Sub test()
Dim SuchTxt As Variant, zr as long
Dim STD As Worksheet, rFind as Range
Set STD = ThisWorkbook.Sheets("Stammdaten")
For i = 1 To lngLetzeZ
SuchTxt = STD.Cells(i, 1).Value
Set rfind = .Columns(1).Find(What:=SuchTxt, After:=.Range("A1"), LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchDirection:=xlNext, MatchCase:=False)
If rfind Is Nothing Then MsgBox SuchTxt & "  Nicht gefunden"
If Not rfind Is Nothing Then
zr = rfind.Row  'gefundene Zeile in Tabelle xx
'hier jetxt dein Programm mit For j = xxx
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Unterschiede zwischen zwei Excel-Tabellen markieren


Schritt-für-Schritt-Anleitung

Um zwei Excel-Tabellen zu vergleichen und die Unterschiede farblich zu markieren, kannst Du folgendes VBA-Skript verwenden. Es vergleicht die Daten in zwei Excel-Arbeitsblättern und markiert die Zellen, die sich unterscheiden.

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

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").

  3. Kopiere den folgenden Code in das Modul:

    Sub VergleicheTabellen()
       Dim sheetJetzt As String, sheetZuletzt As String
       Dim lngLetzeZ As Long, lngLetzeS As Long
       Dim i As Long, j As Long
       Dim arrT1 As Variant, arrT2 As Variant
       Dim rngBereich As Range
    
       sheetJetzt = "Tabelle1" ' Name des ersten Tabellenblatts
       sheetZuletzt = "Tabelle2" ' Name des zweiten Tabellenblatts
    
       With ThisWorkbook.Sheets(sheetJetzt)
           lngLetzeS = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
           lngLetzeZ = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
           arrT1 = .Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS))
       End With
    
       With ThisWorkbook.Sheets(sheetZuletzt)
           arrT2 = .Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS))
       End With
    
       For i = 1 To lngLetzeZ
           For j = 1 To lngLetzeS
               If arrT1(i, j) <> arrT2(i, j) Then
                   ThisWorkbook.Sheets(sheetJetzt).Cells(i, lngLetzeS + 1).Value = "ja"
                   If Not rngBereich Is Nothing Then
                       Set rngBereich = Union(rngBereich, ThisWorkbook.Sheets(sheetJetzt).Cells(i, j))
                   Else
                       Set rngBereich = ThisWorkbook.Sheets(sheetJetzt).Cells(i, j)
                   End If
               End If
           Next j
       Next i
    
       If Not rngBereich Is Nothing Then rngBereich.Interior.ColorIndex = 6 ' Gelbe Markierung
    End Sub
  4. Passe die Namen der Arbeitsblätter im Code an (Tabelle1 und Tabelle2).

  5. Führe das Skript aus, um die Unterschiede zu markieren.


Häufige Fehler und Lösungen

  • Fehler: "Nicht gefunden" - Dies kann auftreten, wenn der Suchbegriff in der Tabelle nicht vorhanden ist.

    • Lösung: Stelle sicher, dass die zu vergleichenden Werte in beiden Tabellen vorhanden sind und in der gleichen Form (z. B. keine zusätzlichen Leerzeichen).
  • Fehler: Der Code funktioniert nicht wie gewünscht.

    • Lösung: Überprüfe die Namen der Arbeitsblätter und die Bereichsdefinition im Code. Achte darauf, dass die Bereiche korrekt zugewiesen sind.

Alternative Methoden

Wenn Du keine VBA verwenden möchtest, kannst Du auch die bedingte Formatierung verwenden, um zwei Excel-Tabellen zu vergleichen und Unterschiede zu markieren:

  1. Markiere den Bereich in der ersten Tabelle.

  2. Gehe zu "Start" > "Bedingte Formatierung" > "Neue Regel".

  3. Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden".

  4. Gib eine Formel ein, um die Zellen mit der zweiten Tabelle zu vergleichen, z. B.:

    =A1<>Tabelle2!A1
  5. Wähle ein Format, um die Unterschiede hervorzuheben.


Praktische Beispiele

Hier sind einige Anwendungsbeispiele:

  • Vergleich von Verkaufsdaten: Nutze die Methode, um Verkaufszahlen zwischen zwei Zeiträumen zu vergleichen.
  • Datenbereinigung: Vergleiche eine alte und eine neue Datenbank, um Duplikate zu finden und zu markieren.
  • Überwachung von Änderungsprotokollen: Markiere Änderungen in Projektplänen, um den Überblick zu behalten.

Tipps für Profis

  • Verwende die Find-Methode: Wie im Beitrag von Piet erwähnt, kannst Du die Find-Methode verwenden, um gezielt Zellen anhand von Schlüsseln zu suchen.
  • Erweiterte Vergleichsfunktionen: Experimentiere mit weiteren VBA-Funktionen, um den Vergleich von zwei Excel-Dateien zu optimieren, wie z. B. das Vergleichen von Zeilen und das Markieren von Übereinstimmungen.

FAQ: Häufige Fragen

1. Wie kann ich zwei Excel-Dateien vergleichen? Du kannst das oben beschriebene VBA-Skript nutzen, um Unterschiede zwischen zwei Arbeitsblättern in einer Excel-Datei zu markieren. Wenn Du zwei separate Dateien hast, musst Du die Arbeitsblattnamen anpassen.

2. Gibt es eine Möglichkeit, identische Zellen farbig hinterlegen? Ja, Du kannst den VBA-Code anpassen, um identische Zellen ebenfalls farblich hervorzuheben, indem Du eine zusätzliche If-Bedingung hinzufügst, die die Übereinstimmung prüft.

3. Wie kann ich die Unterschiede in einer neuen Tabelle ausgeben? Du kannst den Code erweitern, um die Unterschiede in einer neuen Arbeitsmappe oder Tabelle auszugeben, indem Du eine neue Tabelle erstellst und die Unterschiede dort einfügst.

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