Wie kann ich in Excel Daten aus zwei Tabellen vergleichen und zusammenführen?

4 Antworten

Hey, ich glaube ich habe jetzt mal das zusammengebastelt was dir helfen könnte. Bitte immer bevor du was änderst eine Sicherrungskopie deiner Datei erstellen.

Also, wenn du dich in Tabelle2 (ich denke so heißt dein Tabellenblatt) befindest gehst du mit ALT+F11 in den VBA Code und legst links ein neues Modul an, da kommt dann folgenden Code rein: Ausführen kannst du das Makro (Vergleich_starten) dann endweder über eine Schlatfläche (Welches du das Makro zuordnest) oder mit der Tastenkombination ALT+F8

Sub Vergleich_starten()
Dim LoLetzte As Long
Dim LoI As Long
Dim lngLetzte As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Sheets("Tabelle1").Select
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
Range("B2:C" & lngLetzte).Copy
With Worksheets("Tabelle2")
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
.Range("A" & lngLetzte).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Sheets("Tabelle2").Select
Columns("A:B").Select
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$B$10012").RemoveDuplicates Columns:=Array(1, 2), _
Header:=xlNo
With Worksheets("Tabelle2")
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
.Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
For LoI = 2 To LoLetzte
If .Cells(LoI, 1) <> "" Then
.Cells(LoI, 3).FormulaArray = "=IF(ISERROR(INDEX(Tabelle1!C[-1],MATCH(RC[-2]&RC[-1],Tabelle1!C[-1]&Tabelle1!C,0))),""Neu"",""Alt"")"
End If
Next LoI
End With
Range("C1").Select
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Dann musst du deine Datei noch als xlsm Datei (Excel-Arbeitsmappe mit Makros) speichern.


Zur Erklärung:

1. Im ersten Schritt werden unnötige Funktionen ausgeschaltet um keine Fehler zu verursachen.

2. Es wird in Tabelle1 alles ausgewählt was in Spalte B und C befüllt ist, kopiert und in die nächste freie Zeile in Tabelle2 (geprüft wird hier Spalte A) eingefügt.

3. Jetzt werden im nächsten Schritt alle Duplikate die sich jetzt in Tabelle2 befinden entfernt.

4. Nun wird durch das Makro geprüft ob sich in Tabelle2 ab Zeile 2 in Spalte A Daten befinden, ist das der Fall, wird automatisch in Spalte C eine Matrixformel eingetragen, welche dir dann anzeigt ob sich die Daten in dieser Zeile schon in Tabelle1 befunden haben oder ob diese erst in Tabelle2 auftauchen. Dieses wird dann endweder mit "Neu" oder "Alt" angezeigt.

5. Am Schluß werden die am Anfang deaktivierten Funktionen wieder aktiviert.


Zum Verständnis habe ich eine Musterdatei erstellt, dort sind dann auch schon bedingte Formatierungen mit drin. Dort kann man dann schneller erkennen ob neu oder alt.

http://workupload.com/file/vpjFHn4l

Ich hoffe ich habe dir das Verständlich erklärt, wenn nicht immer raus mit den Fragen :))

Habe fertig ;))


RBMannheim  08.09.2015, 15:05

Warum sollte man für etwas so ein langes Makro schreiben, was man mit einer einfachen Hilfsspalte in weniger als 1 Minute erledigt hat?

0
schmiddi1967  08.09.2015, 23:54
@RBMannheim

Naja, warum sollte man das machen.

"Weil ich es für mich als wichtig erachte"

Wieviel Zeit ich in die Antwort auf eine Frage stecke ist ganz allein meine Sache. Wenn das Ergebnis letzendlich ist das der FS an seinen Tabellen nichts ändern muß und in weniger als eine Minute meine Lösung einbauen kann habe ich mein Ziel erreicht.

0

Google mal nach Pivot Auswertung oder Pivot Tabelle. Sorry aber für eine detaillierte Erklärung reicht dieses Medium hier einfach nicht.

Der Abgleich zweier Tabellen funktioniert meistens mit dem SVERWEIS, den man auch mit WENN verknüpfen kann.


steinbuechel 
Beitragsersteller
 07.09.2015, 17:44

in diesem Fall leider nicht

0

Das ist eigentlich ganz einfach. Du machst Dir in beiden Tabellen in einer Hilfsspalte einen Vergleichsschlüssel, also z.B. =Name&Vorname

Dann suchst Du in der Tabelle AUS der Du Daten in die andere Einfügen willst per SVERWEIS nach diesem Schlüssel, z.B. =SVERWEIS(Tabelle1!A1;Tabelle2!$A$1:$A$500;1;falsch).

Für alle vorhandenen Namen erscheint dann wieder der Name. Für alle nicht vorhandenen Namen erscheint #NV. Danach kannst Du dann Filtern oder sortieren.