Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

44 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige