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

Forumthread: Vergleich von zwei Dateien

Vergleich von zwei Dateien
30.04.2008 08:20:00
zwei
Liebe Experten,
bitte wieder einmal um Hilfe, da ich im Archiv wohl was passendes für mein Problem finde es aber bei mir nicht funktioniert. Ich kann mir schon ein wenig in VBA helfen und Code anpassen aber sehr weit reichts eben dann doch nicht.
Vorhanden sind zwei identisch aufgebaute Arbeitsmappen mit ebensolchen Arbeitsblättern.
In der ersten Zeile befinden sich die Spaltenüberschriften.
Nun möchte ich vergleichen welche Zeilen Unterschiede aufweisen und in welchen Zellen.
Hilfreich wäre was ist in der einen Tabelle und nicht in der anderen und umgekehrt.
Die Vergleichstabellen sollen in neue Arbeitsblätter z.B. "abc_alt" und "abc_neu" geschrieben und die Zellen farblich gekennzeichnet werden.
Ich hoffe mich nicht zu patschert ausgedrückt zu haben und danke Euch im Voraus.
Wenns hilft kann ich ein Muster hochladen.
LG
Michael Ambrosch

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich von zwei Dateien
01.05.2008 14:45:56
zwei
Hallo Michael,
ich hoffe, ich habe Deine Frage richtig verstanden. Mein Vorschlag:
Verglichen werden sollen die Inhalte von Arbeitsmappe1, Tabelle 1 und Arbeitsmappe2, Tabelle1. Zeilen der Tabellen, die voneinander abweichen, werden geschrieben nach Arbeitsmappe1, Tabelle2 und Arbeitsmappe2, Tabelle2. Die Inhalte der Zellen der Tabellen2, die voneinander abweichen, werden rot dargestellt.
Die Makros "Vergleichen()" und "WkbExists()" befindet sich in beiden Arbeitsmappen, so dass der Vergleich aus jeder der Arbeitsmappen gestartet werden kann.
Zunächst wird geprüft, ob Arbeitsmappe1 bzw. Arbeitsmappe2 geöffnet sind. Wenn nicht, dann wird der Dialog zum Dateiöffnet aufgerufen und anschliessend der Vergleich durchgeführt.

Sub Vergleichen()
Dim oWS1_1 As Object, oWS1_2 As Object, oWS2_1 As Object, oWS2_2 As Object
Dim bCol As Byte, iRow As Integer, iRow2 As Integer
Dim sTab1 As String, sTab2 As String
On Error GoTo abbruch
If ActiveWorkbook.Name = "Arbeitsmappe1.xls" Then
WkbExists "Arbeitsmappe2.xls"
ElseIf ActiveWorkbook.Name = "Arbeitsmappe2.xls" Then
WkbExists "Arbeitsmappe1.xls"
End If
On Error GoTo 0
Set oWS1_1 = Excel.Application.Workbooks("Arbeitsmappe1.xls").Worksheets("Tabelle1")
Set oWS1_2 = Excel.Application.Workbooks("Arbeitsmappe1.xls").Worksheets("Tabelle2")
Set oWS2_1 = Excel.Application.Workbooks("Arbeitsmappe2.xls").Worksheets("Tabelle1")
Set oWS2_2 = Excel.Application.Workbooks("Arbeitsmappe2.xls").Worksheets("Tabelle2")
oWS1_2.UsedRange.Delete
oWS2_2.UsedRange.Delete
iRow2 = 1
For iRow = 1 To oWS1_1.Cells(Rows.Count, 1).End(xlUp).Row
sTab1 = ""
sTab2 = ""
For bCol = 1 To oWS1_1.Cells(1, Columns.Count).End(xlToLeft).Column
sTab1 = sTab1 + Format(oWS1_1.Cells(iRow, bCol))
sTab2 = sTab2 + Format(oWS2_1.Cells(iRow, bCol))
Next bCol
If sTab1  sTab2 Then
For bCol = 1 To oWS1_1.Cells(1, Columns.Count).End(xlToLeft).Column
oWS1_2.Cells(iRow2, bCol) = oWS1_1.Cells(iRow, bCol)
oWS2_2.Cells(iRow2, bCol) = oWS2_1.Cells(iRow, bCol)
Next bCol
iRow2 = iRow2 + 1
End If
Next iRow
For iRow = 1 To oWS1_2.Cells(Rows.Count, 1).End(xlUp).Row
For bCol = 1 To oWS1_2.Cells(1, Columns.Count).End(xlToLeft).Column
If oWS1_2.Cells(iRow, bCol).Value  oWS2_2.Cells(iRow, bCol).Value Then
oWS1_2.Cells(iRow, bCol).Font.ColorIndex = 3
oWS2_2.Cells(iRow, bCol).Font.ColorIndex = 3
End If
Next bCol
Next iRow
GoTo ende
abbruch:
MsgBox ("Keine Arbeitsmappe zum Vergleich ausgewählt")
ende:
End Sub



Sub WkbExists(sName As String)
Dim bExists As Boolean, objWorkbook As Object
bExists = False
For Each objWorkbook In Application.Workbooks
If objWorkbook.Name = sName Then
bExists = True
Exit For
End If
Next objWorkbook
If bExists = False Then
sName = Application.GetOpenFilename("Excel-Dateien(*.xls), *.xls")
Workbooks.Open Filename:=sName, ReadOnly:=False
End If
End Sub


Anzeige
AW: Vergleich von zwei Dateien
01.05.2008 15:52:58
zwei
Hallo Jürgen Hermann,
danke, ich hab nun den Code in beide Arbeitsmappen kopiert. Die Bezeichnungen der Mappen und Blätter sind wie im Code angegeben.
Beim Aufruf kommt die Meldung "Laufzeitfehler (9): Index außerhalb des gültigen Bereichs." Klick auf Debuggen weist in Sub Vergleich auf die Zeile Set oWS1_1 = Excel.Application.Workbooks("Arbeitsmappe1.xls").Worksheets("Tabelle1") hin.
beide Mappen hab ich hochgeladen.
https://www.herber.de/bbs/user/52009.zip
https://www.herber.de/bbs/user/52010.zip
Bitte um Hilfe, das ist zu komplex für mich um es zu analysieren und den Fehler zu finden.
Danke und LG
Michael

Anzeige
AW: Vergleich von zwei Dateien
01.05.2008 21:23:54
zwei
Hallo Michael,
da die beiden Dateien unterschiedlich viele Datenzeilen haben funktioniert ein 1zu1 Vergleich nicht.
Leider gibt es in der Datei auch keine Spalte mit einem Schlüsselfeld.
Ich hab deshalb mal hilfsweise Name Vorname Sterbetag und Wohnort in der Spalte 19 (S) per Formel zu einem Wert zusammengezogen und dann die Daten mit meinem Makro Variante-Schlüsselfeld bearbeitet.
Wegen der resultierenden Dateigröße hab ich hier alle unveränderten Datensätze weggelassen.
Bei dieser Vorgehenweise werden dann alle Zeilen, bei denen Name, Vorname, Sterbetag und/oder Wohnort geändert wurden auch als gelöschte und neue Datensätze ausgewiesen. Aber da sich die Zeilenzahl in Grenzen hält dürfte das nicht so schlimm sein.
Im Blatt Kopie_Arbeitsmappe_1_Neu sind die Daten aus deiner Arbeitsmappe_2 drin.
https://www.herber.de/bbs/user/52022.zip
Gruß
Franz

Anzeige
AW: Vergleich von zwei Dateien
02.05.2008 12:28:42
zwei
Hallo Michael,
ich hoffe, später am Tag Zeit zu haben, den Fehler zu suchen. Bei mir funktioniert das Makro allerdings einwandfrei. Ich vermute , dass es zu dem Laufzeitfehler kommt, weil es bei Dir keine Datei mit dem Namen "Arbeitsmappe1.xls" und dem darin enthaltenen Tabellenblatt mit dem Namen "Tabelle1" in dem Verzeichnis gibt, in dem Du arbeitest. Ergänze vielleicht auch die Zeile "Excel.Application.Workbooks("Arbeitsmappe1.xls").Worksheets("Tabelle1")" (und auch die anderen) um die Pfadangabe: "Excel.Application.Workbooks("c:\...\Arbeitsmappe1.xls").Worksheets("Tabelle1")
Gruß
Jürgen

Anzeige
AW: Vergleich von zwei Dateien
02.05.2008 18:47:42
zwei
Hallo Michael,
ich habe mir die beiden Arbeitsmappen von Dir angesehen. Der Fehler ist offensichtlich: sie heißen Arbeitsmappe_1.xls und Arbeitsmappe_2.xls anstatt Arbeitsmappe1.xls und Arbeitsmappe2.xls. Nach der Umbenennung funktionierte das Makro einwandfrei. Wie Du Deine Arbeitsmappen und Tabellen benennst, ist unerheblich. Wichtig ist, dass die Namen im Code dann auch entsprechend geändert werden:
"Arbeitsmappe1.xls" ersetzen durch den Namen deiner ersten Arbeitsmappe
"Tabelle1" ersetzen durch den Namen des ersten Tabellenblattes in Deiner ersten Arbeitsmappe
"Arbeitsmappe2.xls" ersetzen durch den Namen deiner zweiten Arbeitsmappe
"Tabelle1" ersetzen durch den Namen des ersten Tabellenblattes in Deiner zweiten Arbeitsmappe
siehe https://www.herber.de/bbs/user/52035.zip
und https://www.herber.de/bbs/user/52036.zip
Gruß
Jürgen

Anzeige
AW: Vergleich von zwei Dateien
02.05.2008 21:00:30
zwei
Hallo Jürgen,
Du hast natürlich vollkommen recht, dass mir das nicht aufgefallen ist ist mir echt peinlich.
Der Vergleich funktioniert super jedoch glaube, ich dass es nicht so ist wie ich es mir vorstellte, wahrscheinlich weil die Tabellen in den Spalten A und B eine Datumsformatierung benutzerdefiniert ####-##-## haben. Die Zellen A und B sind in den Tabellen 2 als Standard formatiert.
Wenn ich z.B. die Datensätze Nießner und Paradeiser in beiden Mappen und Blättern vergleiche sind sie exakt gleich, es werden aber trotzdem Zellen rot geschrieben. Mit der Formel Tabelle1!A3=Tabelle2!A1 kommt in den Zellen A bis Q WAHR heraus.
Was muss man da anders schreiben damit es richtig funktioniert?
Danke und LG
Michael

Anzeige
AW: Vergleich von zwei Dateien
02.05.2008 23:23:06
zwei
Ich habe mir Deine Tabellen angesehen. Mein Makro funktioniert zwar, aber das Ergebnis ist nicht das gewünschte. Kann es auch nicht sein. Grund: das Makro vergleicht Zeile für Zeile der beiden Tabellen. Nun enthält die eine TabelleDatensätze, die in der anderen nicht vorkommen. Das bedeutet, dass sich die Datensätze der Tabellen gegeneinander verschieben. Plötzlich wird Meier mit Müller verglichen. Dann muss natürlich alles rot dargestellt sein. Wichtig ist also, dass das Makro zunächst die Datensätze ermittelt, die in der jeweils andern Tabelle nicht vorkommen. Diese kann ich ausfiltern, müsste von Dir allerdings wissen, nach welchen Kriterien ich vorgehen soll. Ich nehme einmal an, dass Kriterium Name und Vorname sein könnte. Wenn dem so ist, teile mir das bitte mit. Dann werde ich dies berücksichtigen

Anzeige
AW: Vergleich von zwei Dateien
03.05.2008 01:42:00
zwei
Hallo Jürgen und Michael,
ich hab mich mit den beiden Dateien ja auch intensiv beschäfftigt.
Name + Vorname ergibt leider keine eindeutige Kennzeichnung der Datensätze. Es gibt ein paar doppelte.
Ich hab dann Name, Vorname, Sterbetag und Wohnort als Kriterium verwendet um Datensätze eindeutig zu kennzeichnen. Das Ergebnis hab ich in der anderen Anwort gepostet. Dabei werden auch ein paar Datensätze als gelöscht bzw. Neu ausgewiesen, bei denen sich diese 4 Angaben in den Dateien unterscheiden.
Michael, nachdem du deine Neue Datei auf Stand hast, solltest die in einer weiteren Spalte eine fortlaufende Nummer eintragen zur Kennzeichnung der Datensätze. Dann ist bei Folgeänderungen ein Vergleich zwischen alt und neu "relativ" einfach möglich. Wobei du neuen Datensätzen dann natürlich auch entsprechende Datensatznummern verpassen muss.
Gruß
Franz

Anzeige
AW: Vergleich von zwei Dateien
03.05.2008 10:55:53
zwei
Hallo Franz und Jürgen,
es ist mir nun klar, dass das mit meinen anfänglichen Überlegungen und Beschreibungen so nicht zum gesuchten Ergebnis führt und Jürgens Analyse hat das bestätigt. Den Ansatz mit fortlaufender Nummerierung der Datensätze habe ich auch schon überlegt auch um die originale Reihenfolge nach Sortierungen wieder herstellen zu können.
Die Kriterien des Vergleiches sind da etwas schwieriger auszuwählen weil bedacht werden muss wo es Doppel geben kann. Sterbetag, Familienname, Vorname und Wohnort sind fürs erste ausreichend. Wenn ich den Code verstehe kann ich das ja dann auch selbst anpassen und eventuell erweitern.
Das Ergebnis sollte jedenfalls sein, dass jeweils in einem extra Blatt die Zeilen von der anderen Mappe die in Zellen anderen Inhalt haben (mit Farbhintergrund versehen) und die Zeilen die gar nicht vorhanden sind (mit Farbhintergrund versehen) hineinkopiert werden.
Da dieser Vergleich nicht allzu oft vorkommt kann ich die variablen Namen der Mappen und Blätter unberücksichtigt lassen. Zur Vorsicht noch einmal hochgeladen die beiden ursprünglichen Files.
Arbeitsmappe1 https://www.herber.de/bbs/user/52049.zip
Arbeitsmappe2 https://www.herber.de/bbs/user/52050.zip
Vielen Dank für Eure Bemühungen und ein schönes Wochenende
Michael

Anzeige
AW: Vergleich von zwei Dateien
04.05.2008 05:24:00
zwei
Hallo Michael,
ich hab meine Steuerdatei nochmals angepasst und verfeinert.
Nach dem Downloaden und Öffnen der Datei muss du nur das Makro starten und dann in den beiden Dialogfenstern die Dateien wählen.
Es wird eine neue Arbeitsmappe erzeugt mit zwei Tabellenblättern in denen die Änderungen markiert sind.
https://www.herber.de/bbs/user/52058.xls
Gruß
Franz

Anzeige
AW: Vergleich von zwei Dateien
17.05.2008 19:51:00
zwei
Hallo Franz,
bitte entschuldige die späte Antwort.
Danke das ist die Lösung.
Dein Macro ist super weil für mich leicht zu bedienen und das Ergebnis ist das was ich brauche.
Danke auch an alle hilfreich Beteiligten
ein schönes Wochenede
Michael Ambrosch

AW: Vergleich von zwei Dateien
01.05.2008 19:52:00
zwei
Hallo Michael,
Mustertabellen sind natürlich immer hilfreich!!!
Für einen "einfachen" 1 zu 1 Vergleich der Tabellenblätter und für den Vergleich, wenn eine Spalte ein Schlüsselfeld (Kennnummer, lfd. Nummer, Kunden-Nummer, etc.) enthält, hab ich dir eine Steuerdatei hochgeladen.
https://www.herber.de/bbs/user/52018.xls
Die zu vergleichenden Arbeitsmappen werden in Dialog-Fenstern ausgewählt, die die Makros anzeigen.
Die zu vergleichenden Tabellen werden in eine neue Mappe kopiert und dann die Daten verglichen.
Der Status (geändert, gelöscht, neu) wird eine Zusatzspalte eingetragen. So kannst du ggf. per Autofilter schnell Daten sichten.
Gruß
Franz
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-Dateien effizient vergleichen


Schritt-für-Schritt-Anleitung

Um zwei Excel-Dateien zu vergleichen, kannst Du folgende Schritte ausführen:

  1. Vorbereitung der Dateien: Stelle sicher, dass beide Excel-Dateien identisch aufgebaut sind, also die gleichen Spalten und Datentypen enthalten. Die erste Zeile sollte die Spaltenüberschriften enthalten.

  2. VBA-Code einfügen:

    • Öffne die Excel-Datei, in der Du den Vergleich durchführen möchtest.
    • Gehe auf „Entwicklertools“ und klicke auf „Visual Basic“.
    • Füge den folgenden Code in ein neues Modul ein:
    Sub Vergleichen()
       Dim oWS1_1 As Object, oWS1_2 As Object, oWS2_1 As Object, oWS2_2 As Object
       Dim bCol As Byte, iRow As Integer, iRow2 As Integer
       On Error GoTo abbruch
    
       ' Arbeitsmappen setzen
       Set oWS1_1 = ThisWorkbook.Worksheets("Tabelle1")
       Set oWS1_2 = ThisWorkbook.Worksheets("Tabelle2")
       ' Hier die zweite Datei öffnen
       ' ...
    
       ' Vergleiche durchführen
       ' ...
    abbruch:
       MsgBox ("Fehler beim Vergleich")
    End Sub
  3. Makro ausführen: Starte das Makro, nachdem Du die entsprechenden Dateien ausgewählt hast.

  4. Ergebnisse überprüfen: Alle Unterschiede werden in den neuen Arbeitsblättern angezeigt, die Du in den Schritten zuvor festgelegt hast.


Häufige Fehler und Lösungen

  • Laufzeitfehler (9): Index außerhalb des gültigen Bereichs: Dieser Fehler tritt auf, wenn die angegebenen Arbeitsmappen oder Arbeitsblätter nicht existieren. Überprüfe die Namen der Dateien und Tabellenblätter im Code und stelle sicher, dass sie korrekt sind.

  • Datumsformatierung: Wenn Du Datensätze vergleichst, die Datumsangaben enthalten, achte darauf, dass die Formatierungen in beiden Tabellen übereinstimmen. Ansonsten könnte der Vergleich fehlerhaft sein.

  • Unterschiedliche Zeilenanzahl: Wenn die beiden Dateien unterschiedlich viele Zeilen haben, sollte ein 1:1 Vergleich vermieden werden. Stattdessen könnte ein Schlüsselattribut (z.B. Name und Vorname) verwendet werden, um die Zeilen zu vergleichen.


Alternative Methoden

  • Excel-Funktionen: Nutze die Funktionen VLOOKUP oder VERGLEICH, um Unterschiede zwischen zwei Excel-Dateien zu identifizieren. Diese Funktionen ermöglichen es Dir, Werte in einer Datei zu suchen und zu vergleichen.

  • Add-Ins: Es gibt verschiedene Excel-Add-Ins, die speziell dafür entwickelt wurden, um Dateien zu vergleichen. Diese Tools bieten oft eine benutzerfreundliche Oberfläche für den Vergleich.

  • Online-Tools: Es gibt auch Online-Dienste, die Dir helfen können, Excel-Dateien zu vergleichen, ohne dass Du VBA verwenden musst.


Praktische Beispiele

  1. Vergleich von Kundenlisten: Wenn Du zwei Excel-Dokumente hast, die Kundeninformationen enthalten, kannst Du den oben beschriebenen VBA-Code nutzen, um Unterschiede in den Kontaktdaten zu ermitteln.

  2. Inventarlisten vergleichen: Wenn Du die Bestände in zwei verschiedenen Excel-Tabellen vergleichen möchtest, kannst Du durch den VBA-Code schnell die Unterschiede identifizieren und die Daten entsprechend farblich markieren.

  3. Änderungshistorie führen: Durch den Vergleich von zwei Versionen einer Excel-Datei kannst Du Änderungen nachverfolgen und dokumentieren, welche Artikel hinzugefügt oder entfernt wurden.


Tipps für Profis

  • Makros anpassen: Passe den VBA-Code an, um spezifische Anforderungen zu erfüllen, wie z.B. das Vergleichen bestimmter Spalten oder das Ignorieren von bestimmten Zellen.

  • Benutzerdefinierte Formatierungen: Verwende bedingte Formatierungen, um Unterschiede visuell hervorzuheben. So kannst Du schnell erkennen, welche Zellen in den beiden Excel-Dateien unterschiedlich sind.

  • Daten validieren: Überprüfe die Daten in Deinen Excel-Dateien auf Konsistenz, bevor Du einen Vergleich durchführst. Dies kann helfen, unerwartete Fehler zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich zwei Excel-Dateien miteinander vergleichen? Du kannst die oben beschriebenen VBA-Makros verwenden oder Excel-Funktionen wie VLOOKUP nutzen, um Unterschiede zwischen den Dateien zu finden.

2. Was tun, wenn die Dateien unterschiedlich viele Zeilen haben? In diesem Fall sollte ein 1:1 Vergleich vermieden werden. Verwende ein gemeinsames Schlüsselattribut, um die Zeilen zu vergleichen.

3. Gibt es eine Möglichkeit, Excel-Dateien ohne VBA zu vergleichen? Ja, Du kannst Excel-Funktionen oder Add-Ins verwenden, die speziell für den Vergleich von Excel-Dateien entwickelt wurden.

4. Wie kann ich sicherstellen, dass die Datumsformate übereinstimmen? Überprüfe die Formatierungen der Zellen in beiden Excel-Dateien und passe sie gegebenenfalls an, bevor Du den Vergleich durchführst.

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