PDA

Vollständige Version anzeigen : Excel: 2 Tabellen auf Übereinstimmungen vergleichen


Nemo
14-01-2008, 11:18
Kann mir jemand erklären, wie ich in Excel zwei Spalten von zwei verschiedenen Tabellen auf gleiche Einträge überprüfen kann?
Wie es dann ausgegeben wird, ist relativ egal, ob in eine weitere Tabelle, oder Hilfsspalte mit Angabe von WAHR/FALSCH, 1/0.
Ich hab schon im Internet geguckt, aber da finde ich nur Macros (weiss nicht, wie ich so was einbinde), oder einen direkten Vergleich von nur 2 bestimmten Feldern.

Schonmal danke.

Sven
14-01-2008, 11:41
Stehen die (gleichen) Einträge immer in den gleichen Zeilen? Oder geht es darum gleiche Zellinhalte zu finden, egal wo sie in der Spalte auftauchen?

Nemo
14-01-2008, 12:21
Die Inhalte tauchen irgendwo in den Spalten auf, ich kann leider nicht einfach korrespondierende Zeilen vergleichen.

Sven
14-01-2008, 12:24
Dann geht das in der Tat nur per Makro.
Kannst du mir mal das Szenario genau erklären (Spalten, Arbeitsblatt, Beispielinhalt)?

Nemo
14-01-2008, 12:36
Also, ich hab eine Tabelle mit Kundendaten, und eine "Blacklist" mit eMail- Addressen. Ich will nur überprüfen, ob die eMail- Addressen in der Blacklist im eMailfeld der anderen Tabelle vorkommen.

Ich hätte ja kein Problem mit nem Makro, hab nur keine Ahnung, wie ich das Makro dann in Excel überhaupt einbaue.:confused:

Sven
14-01-2008, 12:57
Ok, das folgende Macro färbt in Tabelle 1 einer Arbeitsmappe alle Zellen rot, die eine Entsprechung in einer weiteren, geöffneten Arbeitsmappe in Spalte 1 haben:
Sub finde_dubletten()
ende_mail = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
ende_black = Workbooks(2).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To ende_mail
wert = Cells(i, 1).Value
For a = 1 To ende_black
wert_black = Workbooks(2).Sheets(1).Cells(a, 1).Value
If wert = wert_black Then Cells(i, 1).Interior.ColorIndex = 3
Next a
Next i
End Sub

Alternativ, sollten sich die beiden Tabellen in einer Arbeitsmappe befinden:
Sub finde_dubletten()
ende_mail = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
ende_black = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To ende_mail
wert = Cells(i, 1).Value
For a = 1 To ende_black
wert_black = Sheets(2).Cells(a, 1).Value
If wert = wert_black Then Cells(i, 1).Interior.ColorIndex = 3
Next a
Next i
End Sub
Nimm das Szenario das bei dir anwendbar ist und kopiere den Code.
In Excel gehst du auf 'Extras' -> Makro -> Visual Basic Editor.
Dort machst du einen Doppelklick auf 'Blatt1' (im linken Teil des Fensters) und fügst den Code dann einfach rechts ein.
Nun wechselst du wieder in Excel und wählst 'Extras' -> Makro -> Makros... und wählst dort das Makro aus.

Wenn du noch anpassen musst:
Sheets(1) bedeutet: Das erste Arbeitsblatt in der Mappe, analog ist natürlich Sheets(2) das zweite.
Ähnlich verhält es sich mit 'Cells'. Cells(1,1) bezeichnet die Zelle A1, Cells(2,1) ist A2, Cells(1,2) ist B1.
Wenn sich also deine Emailadressen in Spalte D befinden musst du den Code bei Cells so ändern, dass es Cells(i,4) lautet.

Nemo
14-01-2008, 13:20
Klasse, danke.:)