Clever-Excel-Forum

Normale Version: Tabellen anhand eines Kriteriums vergleichen und Matches zusammenführen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend,

ich würde mich sehr freuen, wenn mir jemand bei einem Problem behilflich sein könnte, das ich trotz wirklich langer Recherche und viel Ausprobieren nicht selbst lösen konnte und allmählich den Eindruck habe, es gibt keine Lösung für mein Problem. 

Ich habe eine Datei mit zwei Tabellenblättern (Beispielnamen): "Kunden alt" und "Kunden neu". In jeder Tabelle habe ich in Spalte A Kunden-IDs, die Spalten B und folgend unterscheiden sich vom Inhalt her.

Ich benötige folgende Funktion:
  • Suchen, welche Kunden ID aus der Tabelle "Kunden neu" bereits in der Tabelle "Kunden alt" vorhanden ist.
  • Den gesamten Datensatz aus den jeweiligen "Kunden neu" in die Tabelle "Kunden alt" überführen, so dass sie als Spalten hinten dran gehängt werden.
  • Die Zeilen, die kein Match in dem anderen Tabellenblatt haben, löschen (das wäre nicht ganz so wichtig)
Ich habe hier mal eine Musterdatei dazu erstellt. Hier ist die "Zielformatierung" in einem neuen Tabellenblatt, damit deutlicher wird, was ich brauche. Wenn der Weg zum Ziel ein anderer sein sollte, ist das überhaupt nicht schlimm, es muss nicht genau so laufen. 

Ich bin dankbar für jeden Hinweis. Habe es mit bedingter Formatierung schon versucht, in anderen Beiträgen nach Formeln gesucht, aber irgendwie klappt das immer nicht...

Tausend Dank!!!

Viele Grüße,
Firena
Moin

Lade beide Tabellen nach PQ und kombiniere sie mittels Inner Join.
Hallo,

hier eine Möglichkeit mit VBA:

Code:
Sub F_en()
Dim DD As Object: Set DD = CreateObject("Scripting.Dictionary")

With Sheets("Kunden alt")
    For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
        it = Application.Transpose(Application.Transpose(.Range(.Cells(i, 2), .Cells(i, 4))))
        DD.Item(.Cells(i, 1).Value) = Join(it, "|")
    Next i
End With

With Sheets("Kunden neu")
    For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
        If DD.exists(.Cells(i, 1).Value) Then
            it = Application.Transpose(Application.Transpose(.Range(.Cells(i, 2), .Cells(i, 5))))
            DD.Item(.Cells(i, 1).Value) = DD.Item(.Cells(i, 1).Value) & "|" & Join(it, "|")
        End If
    Next i
End With

rr = 10
With Sheets("Zielformatierung")
For Each Key In DD.keys
        If UBound(Split(DD(Key), "|")) = 2 Then
            DD.Remove (Key)
        Else
            Cells(rr, 1) = Key
            Cells(rr, 2) = DD(Key)
            rr = rr + 1
        End If
Next Key
End With
'Debug.Print DD.Count
Set DD = Nothing
End Sub

mfg
Hallo shift-del-,
hallo Fennek,

vielen Dank für die Hilfe! Ich werde mir beide Varianten mal ansehen und hoffe, dass ich damit durch komme.

Echt klasse, vielen Dank!