PDA

Vollständige Version anzeigen : Tabellen vergleichen


HeinzPSX
06.08.2001, 09:10
Halihalo,

kann mir jemnd dieses Makro so verändern das Excel nicht die ganze tabelle inkl Formatierung sondern nur die Inhalte vergleicht? Ein anderes Makro hab ich hier im Forum leider nicht gefunden!
hier da Makro (siehe Tabellen vergleichen (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=54762)):

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> Tabellen_vergleichen()
<span class="TOKEN">Dim</span> verg1(2500, 60), verg2(2500, 60), mer(2500), titel(60)
<span class="REM">'Tabelle 1 einlesen</span>
Worksheets(&quot;Tabelle1&quot;).Activate
&nbsp;
y = 1
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> Cells(1, y) &lt;&gt; &quot;&quot;
titel(y) = Cells(1, y)
y = y + 1
<span class="TOKEN">Loop</span>
<span class="TOKEN">For</span> r = 1 <span class="TOKEN">To</span> y - 1
z = 1
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> Cells(z, 1) &lt;&gt; &quot;&quot;
verg1(z, r) = Cells(z, r)
z = z + 1
<span class="TOKEN">Loop</span>
<span class="TOKEN">Next</span> r
&nbsp;
<span class="REM">'Tabelle 2 einlesen</span>
Worksheets(&quot;Tabelle2&quot;).Activate
&nbsp;
yy = 1
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> Cells(1, yy) &lt;&gt; &quot;&quot;
yy = yy + 1
<span class="TOKEN">Loop</span>
<span class="TOKEN">For</span> r = 1 <span class="TOKEN">To</span> yy - 1
z = 1
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> Cells(z, 1) &lt;&gt; &quot;&quot;
verg2(z, r) = Cells(z, r)
z = z + 1
<span class="TOKEN">Loop</span>
<span class="TOKEN">Next</span> r
&nbsp;
<span class="REM">'&Auml;nderungen kennzeichnen</span>
<span class="TOKEN">For</span> r = 1 <span class="TOKEN">To</span> z - 1
<span class="TOKEN">For</span> s = 1 <span class="TOKEN">To</span> yy - 1
<span class="TOKEN">If</span> verg1(r, s) &lt;&gt; verg2(r, s) <span class="TOKEN">Then</span>
mer(r) = r
Cells(r, s).Select
<span class="TOKEN">With</span> Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
Selection.Interior.ColorIndex = 3
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> s
<span class="TOKEN">Next</span> r
Worksheets(&quot;Tabelle3&quot;).Activate
<span class="TOKEN">For</span> l = 1 <span class="TOKEN">To</span> yy - 1
Cells(1, l) = titel(l)
<span class="TOKEN">Next</span> l
zz = 2
<span class="TOKEN">For</span> m = 1 <span class="TOKEN">To</span> z - 1
<span class="TOKEN">If</span> m = mer(m) <span class="TOKEN">Then</span>
<span class="TOKEN">For</span> n = 1 <span class="TOKEN">To</span> yy - 1
Cells(zz, n) = verg2(m, n)
<span class="TOKEN">Next</span> n
zz = zz + 1
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> m
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Es werden zwei Tabellen verglichen, Abweichungen in der zweiten Tabelle markiert und die Zeilen mit den Abweichungen in eine dritte Tabelle geschrieben.

Vielen Dank

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag der Code für dieses Forum angepasst.<font>

Stema
06.08.2001, 11:39
Hallo Heinz,

das Makro vergleicht nur die Inhalte.
Meinst Du, er soll die Unterschiede nicht markieren, sondern nur in Tabelle3 ausgeben?

HeinzPSX
06.08.2001, 12:18
Das ist komisch, weil ich 2 tabellen habe in den hauptsächlich das selbe steht, aber mit diesem makro zeigt excel mir teilweise auch felder markiert an in denen genau das selbe steht!
Daher dachte ich das ekcel auch die formatierung mit überprüft!
Ansonsten wüßte ich nicht woran das liegen kann!

Gruß Heinzi

HeinzPSX
06.08.2001, 12:22
Hat sich soeben erledigt!

Keine Ahnung warum aber jetzt funzt es!

:)

Gruß Heinzi

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>

HeinzPSX
06.08.2001, 12:52
Das muß ich wohl zurücknehmen :(

Jetzt macht er alles richtig bis zum ersten fehler, danach alles rot!

??????????

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>

Stema
07.08.2001, 08:28
Hallo Heinz!
Das ist komisch, weil ich 2 tabellen habe in den hauptsächlich das selbe steht, aber mit diesem makro zeigt excel mir teilweise auch felder markiert an in denen genau das selbe steht!
Daher dachte ich das ekcel auch die formatierung mit überprüft!
Ansonsten wüßte ich nicht woran das liegen kann!
Gruß Heinzi

Das könnte evtl. an Leerzeichen in den Zellen liegen oder auch Groß- und Kleinschreibung.
Das muß ich wohl zurücknehmen
Jetzt macht er alles richtig bis zum ersten fehler, danach alles rot!

Da brauche ich genaue Informationen. An welcher Stelle tritt ein Fehler auf? Fehlermeldung?

Klaus-Dieter
07.08.2001, 18:09
Als Urheber des Makros möchte ich an dieser Stelle einige Punkte klarstellen, um zu vermeiden, daß zu große Anforderungen an diese einfache Routine gestellt werden:

1. Das Makro wurde für einen bestimmten Zweck geschrieben.

2. Dieser wird in vollen Umfang erreicht.

Ziel des Makros:

1. Vergleich der Spalte A in Tabelle 2 mit der Spalte A in Tabelle 1
2. Markieren der abweichenden Zellinhalte in Tabelle 2
3. Auflisten der abweichenden Inhalte in Tabelle 3

Anmerkungen:

1. Daraus folgt als grundsätzliche Bedingung, daß Tabellenblätter mit den Namen „Tabelle1“, „Tabelle2“ und „Tabelle3“ vorhanden sind. Sonst müßte der Quellcode entsprechend angepaßt werden.
2. Es können nur Vergleiche durchgeführt werden, wenn einzelne Zellen inhaltlich verändert wurden. Größere Veränderungen (Vertauschen von Spalten usw.) in einer der Tabellen führen zwangsläufig zu Fehlinterpretationen.
3. Einfügen von Zeilen/Zellen hat zur Folge, daß alle nachfolgenden Zellen als verändert markiert werden.
4. Es können in Tabelle 2 Zeilen/Zellen angefügt werden. Diese werden dann auch korrekt erkannt und entsprechend abgearbeitet.
5. Angefügte Zeilen/Zellen in Tabelle 1 werden nicht abgearbeitet. Dazu wäre ein Vergleich der Tabellen „über Kreuz“ notwendig. Auch machbar!
6. Natürlich werden auch kleine Veränderungen erkannt (Leerzeichen vor, in oder hinter Strings, Groß- und Kleinschreibung).
>> All das wurde nicht berücksichtigt, weil es nicht Bestandteil der Anforderung war.

Wer spezielle Fragen zum Vergleichen von Tabellen hat, kann sich gerne an mich wenden, ich habe damit einige Erfahrungen, da ich im beruflichen Umfeld häufig solche Makros schreibe. Dazu ist es natürlich wichtig zu wissen, was wie verglichen werden soll. Es gibt für solche Aufgaben kein Standartmakro, da die Anforderungen so verschieden sind, wie die Tabellen selbst.
Es ist möglich, den Vergleich über eine Spalte (z.B. Teilnummer oder Bestellnummer) über mehrere Spalten (Vorname, Familienname, Wohnort) durchzuführen.
Auch komplexe Vergleiche sind möglich. Natürlich müssen die zu vergleichenden Tabellen ein gewisses Maß an Übereinstimmungen aufweisen, sonst macht das Ganze keinen Sinn.

Ich werde das Thema in absehbarer Zeit auch auf meiner <a href="http://home.tiscali.de/excelseite/Index.html">Excel-Webseite</a> behandeln. Das wird aber noch eine Weile dauern, da ich erst einmal geeignete Beispiele zusammenstellen muß.

<a href="http://home.tiscali.de/excelseite/Excel/TabVergleich2.exe">Eine Beispieltabelle </a>für das vorliegende Makro zum Testen.

Gruß Klaus-Dieter

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Link(s) korrigiert.</font>

aysbaer
26.01.2005, 13:13
@ Klaus dieter

Ich möchte eine 2 Tabelle vergleichen mit 400 Zeilen und Spalten von A bis AI.
leider funktioniert dein code dort nicht mehr!

kannst du mir helfen?

Lumpensammler
26.01.2005, 14:35
Hallo, aysbaer,

Klaus-Dieter hat doch beschrieben, was sein Makro macht. Dort ist die Rede von Spalte A in zwei Tabellen. Ich persönlich halte das Arbeiten mit Arrays wie von Klaus-Dieter beschrieben für unglücklich. http://www.herber.de/mailing/029298h.htm bzw. http://www.herber.de/mailing/136001h.htm lassen sich meiner Meinung nach viel leichter anpassen.

Gruß
LS

skyvalley
24.04.2007, 13:08
Hallo,

gibt es da einen konkreten Lösungsvorschlag für die Berücksichtigung von kleinen Änderungen, insbesonder Leerzeichen nach Strings ?

6. Natürlich werden auch kleine Veränderungen erkannt (Leerzeichen vor, in oder hinter Strings, Groß- und Kleinschreibung).

Danke, Torsten