Tabellenblätter mit Excel vergleichen

sebastian1

Lt. Commander
Registriert
Sep. 2006
Beiträge
1.237
Hallo,
ich sitze hier schon etwas länger an einem Problem und hoffe das ihr mir da helfen könnt.

Ich möchte in Excel 2 Tabellenblätter auf Unterschiede vergleichen und die Ergebnisse in einem 3ten Tabellenblatt wieder ausgeben.

-Tabellenblatt 1 ist also die Referenz mit den Daten wie es immer sein soll.
-Tabellenblatt 2 sollte identisch sein kann aber auch Abweichungen enthalten da diese Werte von einem Programm ausgegeben werden.
-Tabellenblatt 3 soll mir anzeigen ob die ersten beiden Blätter identisch sind oder ob es Abweichungen gibt. Wenn ja wäre es noch super wenn dazu die Spalte und Zeile angeziegt wird oder ähnliches. In der Anwendung haben die Tabellen nämlich ca. 100000x60 Felder.

Hier mal ein kleines Beispiel wo Tabellenblatt 3 zwar das erfüllt was ich mir Vorstelle. Auf große Tabellen kann ich das nur leider nicht anwenden.
http://dl.dropbox.com/u/14016445/Vergleich.xlsx
 
Hi,

bei dem Problem dürfte dir nur ein Macro oder ein kleines Zusatzprogramm helfen. Ich würde da in C# einfach die beiden Blätter einlesen, vergleichen und am Ende ausgeben "Unterschied war hier, hier und hier".

Aber mal ehrlich: vielleicht solltet ihr das Konzept auch überarbeiten. Eine Tabelle mit 100.000 Spalten ist definitiv nicht für die Bearbeitung durch einen Menschen gemacht und zum maschinellen Datenaustausch gibt es weit effektivere Wege (Stichwort: XML), um so große Datenmengen zu vergleichen.

Nur mal als Denkanstoß :)

VG,
Mad
 
Also das ganze soll dazu dienen um zu gucken ob ein Programm nach Updates noch die gleichen Werte berechnet wie vorher. In der Regel stimmt immer alles aber Kontrolle ist immer besser :)
 
Hi,

und wie genau erstellt das Programm die Daten? Bzw: Gibt es keine Möglichkeit, die Daten anders aufbereitet zu werden? Also XML oder was auch immer? Oder erstellst das Programm Excel-Dateien?

Wie gesagt, ich würde ein kleines C#-Programm basteln, beide Sheets einlesen, Spalte für Spalte und Zeile für Zeile vergleichen und dann ausgeben, wenn die Werte nicht die selben sind. Kann man wahrscheinlich mit einem VB-Macro auch lösen, nur das ist leider nicht meine Welt :)

VG,
Mad
 
Brauchste bei dem Schreiben des Makros hilfe? Ich meine damit sollte es wesentlich schneller gehen, als nun ohne Kenntis! ein C# Programm zu bauen.
 
Hi,

sagt doch gar niemand dass er keine Kenntniss hat ;)

Aber falls ihr da ein Macro schreibt: Bitte wenn möglich hier posten! Würde mich auch interessieren :)

VG,
Mad
 
Ich würde ihm schnell eins schreiben wenn er sich meldet. Gute Aufwärmübung für mich wieder, halte mich da ja gerne fit :)

Das Problem ist, wir wissen es ja nicht. Vielleicht ist er ein Geek und klatsch das innerhalb von Minuten da hin. Vielleicht hockt er sich auf deinen Tipp da hin und liest sich wälzer von C# durch :)
 
Hi,

hoffentlich meldet er sich, bevor er sich C#-Lehrbücher bestellt :D

Bin gespannt auf euer Macro! :)

VG,
Mad
 
Ich muss Mittagspause machen und komme gerade net mehr weiter. Denkfehler drin warscheinlich und nun erstmal Mittag. Könnt es ja zuende machen:

Code:
Sub Daten_überprüfen()
Dim Wahr As String
Dim Seite1 As String
Dim Seite2 As String


Seite1 = 2
Seite2 = 2
Wahr = 0

Do

If Sheets("Tabelle1").Cells(2, Seite1) = Sheets("Tabelle2").Cells(2, Seite2) Then

Sheets("Tabelle3").Cells(3, Seite1) = "Stimmt Überein!"
Else
Sheets("Tabelle3").Cells(3, Seite1) = "Falsch!"

If Sheets("Tabelle1").Cells(2, Seite1) = "" Then

Wahr = Wahr + 1

End If:

Seite1 = Seite1 + 1
Seite2 = Seite2 + 1

End If:

Loop While Wahr = 0

End Sub
 
So hatte gerade Mittagspause.
Gut Programmieren kann ich leider nicht. Studiere Elektrotechnik und habe 1 Semester C/C++ gehabt. Von daher kann ich eigentlich nur ein wenig die Grundlagen und habe überhaupt keine Praxiserfahrung was Programmieren angeht.

@Malock
Schonmal vielen Dank für den ersten Ansatz. Habe zwar jetzt gleich schon Feierabend aber ich werde mich da auch Zuhause dransetzen. Montag wollte ich das gelöst haben.
 
der 1. parameter von cells() gibt die zeile an und der 2. die spalte. du durchläufst also mit deinem do-while die gesamte zeile 2. 2 läufervariablen machen keinen sinn, da die zellen ja immer an der gleichen stelle stehen; da reicht ein läufer.

davon ab... ich habe den vergleich via vba auch mal umgesetzt und der dauert bei 100.000 zeilen schon für eine einzige spalte circa 30 sekunden. das würde bedeuten, dass das vba-makro für einen 100.000x60-vergleich je nach cpu evtl. eine halbe stunde benötigen würde, falls er dabei nicht abstürzt (getestet auf einem subnotebook mit Intel Core 2 Duo SU9300). nicht so das gelbe vom ei.
 
Zuletzt bearbeitet:
Hi,

@gschulde

Danke für den Einwand. Der Aspekt "Performance" ist natürlich auch interessant. Da wäre die C# Geschichte massiv schneller. Wäre vielleicht doch interessant. Aber schaut mal weiter, wie die Performance beim Macro wird. Ist echt interessant :)

VG,
Mad
 
hallo zusammen

alter thread, hab ihn via google gefunden. habe einen ähnlichen fall, kann da vielleicht jemand weiterhelfen?

ich habe zwei tabellen (tabelle1 & tabelle2), im gleichen file. die beiden tabellen haben die gleiche struktur (spalten sind immer gleich), jedoch unterschiedliche zeilen. gerne würde ich mir ein einer dritten tabelle (tabelle3) die unterschiede ausweisen lassen. es können zusätzliche oder fehlende zeilen sein, aber auch solche mit inhaltlichen änderungen.

zur erklärung: tabelle1 ist quasi der ursprungszustand. tabelle2 ein aktueller zustand. in tabelle3 sollen die unterschiede ersichtlich werden.

beispiel:

tabelle1:

A B C D
1 wer was wo wann
2 lisa schautTV zuhause jetzt
3 hans schautTV zuhause gestern
4 hans schautTV zuhause gestern
5 mike duscht zuhause jetzt
6 fritz isst im büro morgen

tabelle2:

A B C D
1 wer was wo wann
2 max trinkt zuhause jetzt
3 hans schautTV zuhause gestern
4 lisa schautTV zuhause jetzt
5 fritz isst zuhause morgen


tabelle3:

A B C D E F
1 wer was wo wann vorhanden_in unterschied_in
2 hans schautTV zuhause gestern tabelle1(E)
3 mike duscht zuhause jetzt tabelle1(E)
4 fritz isst zuhause morgen tabelle2(F)
5 max trinkt zuhause jetzt tabelle2(F)


ist das irgendwie verständlich? ich kann auch gerne die originale datei zur verfügung stellen...

vielen dank!

lg, the baze
 
Zurück
Oben