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

Forumthread: 2 Sheets vergleichen & Unstimmigkeiten markieren ?

2 Sheets vergleichen & Unstimmigkeiten markieren ?
Daniel
Haaallo,
ich bräuchte hilfe bei einer Vergleichs-Story in Excel.
Und zwar habe ich als Beispiel mal folgende Datei:
https://www.herber.de/bbs/user/72459.xls
Über den Sinn des Inhalts reden wir mal nicht, die Daten die normalerweise drin stehen sind confidential, darf ich hier nicht preisgeben.
Jedenfalls brauche ich folgendes, entweder ein VBA Code oder eine Formel, egal wie.
Es soll ZEILE für ZEILE von Tabelle1 mit Tabelle2 verglichen werden, sprich A2 aus Tab1 mit A2 aus Tab2. Hat sich in der Tabelle2 nichts verändert, sprich alles in A2 ist gleich Tab1=Tab2, dann soll nichts passieren.
Wenn der Vergleich jedoch auch nur eine einzige Zahl oder ein Buchstabe erkennt, der anders ist als in Tab1, dann soll in einer dahinter liegenden Spalte ein X angezeigt werden, damit man erkennt dass ein Unterschied besteht.
Am allerfeinsten wäre dann dabei eine farbige Markierung der jeweiligen Fehlerquelle (sprich wo ist der Unterschied).
Ich habe bereits das hier mal ausprobiert, was ja eig. genau das ist, was ich suche - aber ich kriege es partout nicht zum laufen:
https://www.herber.de/mailing/136001h.htm
Ständig kommt die Fehlermeldung "Außerhalb einer Prozedur ungültig" ...
ich muss dazu sagen - ich kann mit Excel umgehen, sofern es nicht um irgendwelche krassen Formelbefehle geht und solang ich kein VBA machen muss. Denn VBA hab ich bisher noch nie gemacht. Ist natürlich dann Supi wenn von meinem Chef (ich= Werksstudent) dann kommt "machense mal, das ist wichtig".
Wer eine Idee hat, wie ich das mit VBA hinbekomme, oder diesen vll. doch recht einfacher Vergleich mit ner großen Formel für jede Zeile einzeln lösen kann, bitte melden ! Wäre sehr sehr dankbar.
btw: hier daheim hab ich Excel 2007, in der Firma nur 2003 - hoffe nicht dass der Fehler daran liegen könnte.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: 2 Sheets vergleichen & Unstimmigkeiten markieren ?
24.11.2010 19:04:33
wolfgang
Hallo Daniel
am einfachsten gehts mit der Formel identisch
Wenn die Tabelle nicht zu groß ist macht sich das auch ganz gut.
=IDENTISCH(Tabelle1!B3;Tabelle2!B3)
gruß wolfgang
AW: 2 Sheets vergleichen & Unstimmigkeiten markieren ?
24.11.2010 19:18:00
Daniel
Naja, es sind am Ende schon so 300 Einträge (Zeilen) ... von Spalte A bis N
Beispieldatei mit VBA
24.11.2010 19:18:24
robert
Hi,
hier ein beispiel, wobei zeilen und spalten nicht autonmatisiert sind,
ev. noch zu machen, oder du gibst zeilen und spalten
wie im beispiel ein.
VBA-profis-bitte nicht lachen ;-)
https://www.herber.de/bbs/user/72462.xls
gruß
robert
Anzeige
Lust auf VBA?
24.11.2010 19:26:32
Erich
Hi Daniel,
vielleicht interessiert dich VBA ja doch noch?
Hier die Prozedur (in ein normales Modul):

Option Explicit
Sub meinVergleich()
Dim rngT1 As Range, blnDif As Boolean
Dim lngR As Long, lngC As Long, zz As Long, cc As Long
With Worksheets("Tabelle1")
lngR = .Cells(.Rows.Count, 1).End(xlUp).Row
lngC = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set rngT1 = .Range(.Cells(3, 1), .Cells(lngR, lngC))
End With
With Worksheets("Tabelle2")
For zz = 3 To lngR
blnDif = False
For cc = 1 To lngC
If .Cells(zz, cc)  rngT1(zz - 2, cc) Then
.Cells(zz, cc).Font.ColorIndex = 3
' oder auch
.Cells(zz, cc).Interior.ColorIndex = 6
blnDif = True
End If
Next cc
If blnDif Then .Cells(zz, lngC + 2) = "x"
Next zz
If lngR 
Und hier eine BeiSpielMappe: https://www.herber.de/bbs/user/72464.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Lust auf VBA?
24.11.2010 20:30:43
wolfgang
Hier noch ein VBA Beispiel
Sub vergleich()
Dim x As Object, y As Object
Set x = Worksheets("Tabelle1")
Set y = Worksheets("Tabelle2")
Dim Zeile As Long, LetzteSpalte As Long
LetzteSpalte = y.Range("A1").SpecialCells(xlCellTypeLastCell).Column
Dim RC
For Each zelle In y.UsedRange
RC = zelle.Address
Zeile = zelle.Row
If x.Range(RC).Value  y.Range(RC).Value Then
y.Range(RC).Interior.ColorIndex = 3
y.Cells(Zeile, LetzteSpalte) = "x"
End If
Next
End Sub

Anzeige
AW: Lust auf VBA?
24.11.2010 20:45:59
Daniel
Cool :)
Danke euch beiden ! beide Versionen machen das was sie sollen !
Ja, werde mich mal einarbeiten... denke ich brauch vll. nun noch öfters -.-
Es macht jedenfalls exakt das was es soll. Ok, zwei Mankos, aber die sind nicht so von Bedeutung. Beim Code von Erich G. kann man das ganze nur ein mal laufen lassen. Sprich wenn einmal die Zellen gefärbt sind und ein "x" da steht, bleibt es da, auch wenn ich den Zellinhalt wieder korrekt tab1=tab2 eintrage. Aber das ist denke ich nicht so wild.
Das Beispiel von Robert habe ich ein wenig abgeändert, damit es in die eigentliche Tabelle passt (Spalten A bis N). Funktioniert auch :)
Werde es meinem Chef mal schicken ... hab gestern 5 Stunden dran rumgemacht und heute 4 ... irgendwie nervig wenn man ständig googlet, versucht irgendwas zusammenzustümpern :( Naja
VIIIIIIIIIIIIIIELEN DANK erstmal ! :)
Anzeige
Prozedur um Löschen ergänzt
25.11.2010 08:13:31
Erich
Hi Daniel,
dein Wunsch (oder der deines Chefs ;-)) kann natürlich erfüllt werden:

Option Explicit
Sub meinVergleich2()
Dim rngT1 As Range, blnDif As Boolean
Dim lngR As Long, lngC As Long, zz As Long, cc As Long
With Worksheets("Tabelle1")
lngR = .Cells(.Rows.Count, 1).End(xlUp).Row
lngC = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set rngT1 = .Range(.Cells(3, 1), .Cells(lngR, lngC))
End With
With Worksheets("Tabelle2")
zz = .Cells(.Rows.Count, 1).End(xlUp).Row
If zz  rngT1(zz - 2, cc) Then
.Cells(zz, cc).Font.ColorIndex = 3
' oder auch
.Cells(zz, cc).Interior.ColorIndex = 6
blnDif = True
End If
Next cc
If blnDif Then .Cells(zz, lngC + 2) = "x"
Next zz
zz = .Cells(.Rows.Count, 1).End(xlUp).Row
If lngR 
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
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

Excel Sheets vergleichen und Unstimmigkeiten markieren


Schritt-für-Schritt-Anleitung

  1. Vorbereitung: Stelle sicher, dass beide Tabellen, die Du vergleichen möchtest, in Deinem Excel-Dokument vorhanden sind. In diesem Beispiel verwenden wir Tabelle1 und Tabelle2.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul einfügen: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx), gehe zu Einfügen und wähle Modul.

  4. VBA-Code einfügen: Kopiere den folgenden Code in das Modul:

    Option Explicit
    Sub meinVergleich()
       Dim rngT1 As Range, blnDif As Boolean
       Dim lngR As Long, lngC As Long, zz As Long, cc As Long
    
       With Worksheets("Tabelle1")
           lngR = .Cells(.Rows.Count, 1).End(xlUp).Row
           lngC = .Cells(1, .Columns.Count).End(xlToLeft).Column
           Set rngT1 = .Range(.Cells(1, 1), .Cells(lngR, lngC))
       End With
    
       With Worksheets("Tabelle2")
           For zz = 1 To lngR
               blnDif = False
               For cc = 1 To lngC
                   If .Cells(zz, cc) <> rngT1(zz, cc) Then
                       .Cells(zz, cc).Interior.ColorIndex = 6 ' Gelbe Markierung
                       blnDif = True
                   End If
               Next cc
               If blnDif Then .Cells(zz, lngC + 1) = "X" ' Unterschied markieren
           Next zz
       End With
    End Sub
  5. Code ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle meinVergleich und klicke auf Ausführen.

  6. Ergebnis überprüfen: In Tabelle2 sollten nun alle Zellen, die von Tabelle1 abweichen, farblich markiert sein und in der letzten Spalte ein "X" anzeigen.


Häufige Fehler und Lösungen

  • Fehlermeldung "Außerhalb einer Prozedur ungültig": Dies kann passieren, wenn der Code nicht korrekt in ein Modul eingefügt wurde. Stelle sicher, dass Du den Code in ein Standardmodul und nicht in ein Klassenmodul oder ein Arbeitsblattmodul einfügst.

  • Keine Markierungen sichtbar: Überprüfe, ob die Zellinhalte tatsächlich unterschiedlich sind. Es kann auch hilfreich sein, die Zellen zu formatieren (z.B. als Text), um sicherzustellen, dass keine versteckten Unterschiede bestehen.

  • Verwenden von Excel 2003 oder 2007: Achte darauf, dass der VBA-Code mit der verwendeten Excel-Version kompatibel ist. Ältere Versionen haben möglicherweise geringfügige Unterschiede in der Funktionalität.


Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch die Funktion IDENTISCH verwenden, um zwei Excel-Tabellen zu vergleichen:

  1. In Tabelle3, z.B. in Zelle A1, schreibe:

    =IDENTISCH(Tabelle1!A1; Tabelle2!A1)
  2. Ziehe die Formel nach unten, um sie auf andere Zellen anzuwenden.

  3. Diese Methode ist einfach, hat jedoch ihre Grenzen, wenn Du Abweichungen markieren möchtest.


Praktische Beispiele

  • Beispiel 1: Du hast zwei Listen von Produkten in Tabelle1 und Tabelle2. Nach dem Vergleich kannst Du Abweichungen schnell erkennen und die fehlerhaften Einträge korrigieren.

  • Beispiel 2: Wenn Du finanziellen Daten in beiden Tabellen vergleichen möchtest, kannst Du mit dem oben genannten VBA-Code Unterschiede bei den Beträgen schnell identifizieren und markieren.


Tipps für Profis

  • Zellen formatieren: Du kannst den Code anpassen, um verschiedene Farben für unterschiedliche Abweichungen zu verwenden. Zum Beispiel, wenn Du nur bestimmte Spalten vergleichen möchtest.

  • Automatisierung: Lege eine Schaltfläche in Excel an, um die VBA-Prozedur mit einem Klick auszuführen.

  • Backup der Daten: Mach immer ein Backup Deiner Daten, bevor Du mit VBA arbeitest, um unerwünschte Änderungen zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich mehrere Spalten gleichzeitig vergleichen?
Ja, der bereitgestellte VBA-Code vergleicht alle Zellen in den angegebenen Spalten. Du kannst den Code entsprechend anpassen, um bestimmte Spalten auszuschließen.

2. Wie kann ich den Vergleich rückgängig machen?
Um die Markierungen zu entfernen, kannst Du die Zellen einfach wieder in den ursprünglichen Zustand zurücksetzen oder einen neuen VBA-Code schreiben, der die Formatierung löscht.

3. Funktioniert das auch mit Excel Online?
Der VBA-Ansatz funktioniert nicht in Excel Online. Du kannst jedoch die IDENTISCH-Funktion dort verwenden.

4. Wie oft kann ich den Vergleich durchführen?
Du kannst den VBA-Code so oft ausführen, wie Du möchtest. Wenn Du die Daten änderst, führe einfach die Prozedur erneut aus.

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