Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Vergleich zweier Excel-Tabellen





Frage

Hallo zusammen. Ich möchte gerne zwei Excel-Tabellen miteinander vergleichen anahnd der dort hinterlegten Namen und Adressen. Als Ergebnis hätte ich gern eine Auflistung der Datensätze, die nicht in beiden Tabellen vorkommen. Wie könnte ich dies wohl am besten hinbekommen?

Antwort 1 von pelle

Hallo poorfirele,

mit diesen etwas wenigen Angaben ist dies nicht so einfach!

Was heisst nicht in beiden Tabellen vorkommen (Vergleichskriterien?)

Wenn Du ein eindeutiges (nicht mehrfach vorkommenden)Vergleichsfeld hast,
könnte Dir evtl. die SVERWEIS-Funktion weiterhelfen.

Alternativ wäre zu überleen, die Tabellen in Access zu importieren und
über 2 Verknüpfungsfragen abzugleichen.

Aber wie gesagt, man braucht ein paar Infos mehr!

gruss
pelle

Ps.: Kannst ja mal Beipsieltabellen schicken!

Antwort 2 von Koebi

Grüezi

Mit diesem Code soll das funktionieren.


Sub doppelte_Daten_suchen()
' Vergleicht Tabelle 2 mit Tablle 1 und schreibt Werte
' aus Tabelle 2, die in Tabelle 1 nicht vorkammen in Tabelle 3
Dim verg1(500), verg2(500), dopp%(500), num(500)
' Tabelle 1 einlesen
Worksheets("Tabelle1").Activate
y = 2
Do While Cells(y, 1) <> ""
verg1(y) = Cells(y, 2)
y = y + 1
Loop
' Tabelle 2 einlesen
Worksheets("Tabelle2").Activate
z = 2
Do While Cells(z, 1) <> ""
num(z) = Cells(z, 1)
verg2(z) = Cells(z, 2)
z = z + 1
Loop
For r = 2 To y - 1
    For s = 2 To z - 1
            If r = s Then s = s + 1
                If verg1(r) = verg2(s) Then 'And dopp(s) = 0
                dopp(s) = 1
                Cells(s, 3) = "gleich"
            End If
        Next s
Next r
' In Tabelle 3 schreiben
Worksheets("Tabelle3").Activate
zz = 1
For u = 1 To z - 1
If dopp(u) = 0 Then
        Cells(zz, 1) = num(u)
        Cells(zz, 2) = verg2(u)
        zz = zz + 1
    End If
Next u
End Sub


Der Code ist nicht von mir. Deshalb besteht auch die Chance, dass er funktioniert.:-)

Gruss
Köbi

Antwort 3 von want2cu

hallo poorfirele,

du könntest das z.B so lösen, dass du ein Hilfsspalte in jede tabelle einfügst, damit man nachher noch auseinanderhalten kann, aus welcher Quelltabelle die datensätze kommen.

Dann packst du alle datensätze in eine Tabelle und sortierst den Krempel nach Nachname, Vorname etc.

In eine Hilfsspalte fügst du dann eine Funktion ein, die z.B. den Inhalt des namensfeldes mit dem darüber stehenden Eintrag vergleicht und dann bei UNgleichheit z.B. den Text "UNGLEICH" ausgibt. Dann per Autofilter diese Datensätze ausfiltern und dann hast du das von dir gewünschte Ergebnis.

So, es gibt vielleicht was supereleganteres aber so hat es zumindest bei geklappt bei ca. 5000 Datensätzen. Wenn es erheblich mehr sein sollten, dann wird es wohl nur über Access gehen.

Wenn du nicht klar kommst, dann poste bitte noch mal.
CU
Klaus

Antwort 4 von Teddy7

Hallo poorfirele !
Der code von Köbi schein schon o.k. zu sein, aber für größere datenmengen läuft das Makro ziemlich lange (Das reicht für eine ganze Kanne Kaffee oder auch zwei).
Die Lösung von Klaus hat auch was, aber sonderlich elegant ist das nicht.
Man könnte ein Makro schreiben das das schöner hinbekommt, aber dazu muß man wissen, wie die Tabellen aufgebaut sind und vor allem welche Felder geprüft werden müssen um ein "vorhanden" feststellen zu können.
Das kann ja nicht nur der Nachname sein.
In dem Makro wird man dann beide Originaltabellen aufsteigend sortieren, damit man bei einem Treffer weiß, daß man bei der nächsten Suche mit dieser Zeile beginnen kann - das spart unglaublich viel Zeit.
Wenn Du sowas haben willst, dann poste mal ein paar Details.
Gruß
Teddy



Antwort 5 von poorfirele

danke für die tipps

@köbi
dein code hat super funktioniert. habe den befehl in der mittagspause gestartet und als ich zurück kam, voila!

@want2cu
deine idee war auch nicht schlecht, aber für meinen fall nicht anwendbar, da die datenmenge zu groß war und ich irgendwie nicht richtig damit zurecht kam. aber dennoch danke für den tipp!

vielen dank noch mal an alle!

Antwort 6 von poorfirele

ich habe das makro von köbi (s.o.) heute mal in excel 87 ausprobiert und ich bekomme die fehlermeldung:

Fehler beim Kompilieren
End Sub erwartet

was bedeutet dies und was muß ich ändern, damit das makro unter excel 97 funktioniert?

Antwort 7 von poorfirele

und hoch damit.

Weiß niemand was diese Fehlermeldung bedeutet?

Antwort 8 von sicci

Hallo poorfirele,

.. sie bedeutet genau, was sie sagt: VBA erwartet am Ende eines Makros als letzte Zeile "End Sub". Schau mal ins Makro rein: hast es sicher nicht mitkopiert, in Köbis ist's nämlich drin.

Gruß
sicci

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: