Excel: Listen zusammenführen - VBA?

frontloop

Ensign
Registriert
Mai 2016
Beiträge
204
Hi,

folgendes Problem:
Ich habe zwei verschiedene Programme, die mir jeweils eine Excel-Liste ausgeben.
Diese möchte ich (teilweise- d.h. nicht alle Spalten aus den jeweiligen Originallisten werden benötigt) möglichst automatisch zusammenfügen.
Problem dabei ist, dass einerseits die Informationen in den jeweiligen Listen nicht gleich sind und auch nicht immer eindeutig.

Konkret:
Liste 1. Informationen können doppelt sein. Außer die ID 1, die ist immer eindeutig. Also Beispielsweise:

NameAdresseHausnummerID 1Kommentar für dieses Forum
Name 1Straße 1Nummer 1eindeutige ID
Name 2Straße 1Nummer 1eindeutige IDalso gleiche Adresse aber unterschiedlicher Name
Name 3Straße 1Nummer 2eindeutige ID
Name 3Straße 1Nummer 2eindeutige IDName 3 hat zwei IDs, taucht also zweimal in der Liste auf
Name 4Straße 1Nummer 3eindeutige ID
Name 4Straße 1Nummer 3eindeutige IDName 3 hat zwei IDs, taucht also zweimal in der Liste auf

Liste 2 sieht wie folgt aus:
NameAdresseHausnummerID 2Kommentar für dieses Forum
Name 1Straße 1Nummer 1eindeutige ID
Name 3Straße 1Nummer 2eindeutige ID
Name 3Straße 1Nummer 2eindeutige IDName 3 hat zwei IDs, taucht also zweimal in der Liste auf
Name 4Straße 1Nummer 3eindeutige ID

Dabei ist die ID 2 aus Liste 2 nicht identisch mit der ID 1 aus Liste 1.
Name 2 taucht zudem in Liste 2 überhaupt nicht auf. Das ist nicht schlimm. Dann gibt es halt zu dem keine weiteren Informationen.
Name 3 taucht in beiden Listen zweimal auf. Ebenso wie bei Namen 4, der in der 1. Liste zweimal, in der zweiten Liste aber nur einmal auftaucht ist es nicht eindeutig, welche "eindeutige ID 2" zu welcher "eindeutigen ID 1" gehört.

in der Zieltabelle sollen alle eindeutig zuordenbare Daten wie folgt dastehen:
NameAdresseHausnummerID 1ID 2ggf. weitere Infos aus Tabelle 1 und 2, wobei das ja dann analog funktioniert

Alle nicht eindeutig zuordenbare Daten sollen aber auch irgendwie für eine manuelle Nachbearbeitung erkennbar sein.

Wie mache ich das am besten? Per normalen Excel-Befehlen oder wäre VBA da die bessere Lösung?

Tabelle 1 umfasst ca. 7.000 Zeilen. Tabelle 2 ca. 2.000. Daher wäre ein komplett manueller Abgleich mit erheblichem Aufwand verbunden.
 
Ist die Datenbasis innerhalb der Software denn wenigstens sauber? Alles gleich formatiert?

Dank AI muss man sich ja nicht mehr alles aus den Fingern saugen, aber wenn du nicht fit in VBA bist, würde ich wohl den Ansatz verfolgen:

Power Query ist ein mächtiges Tool in Excel (ab Version 2016 enthalten), um Daten zu bereinigen, zu transformieren und zu verknüpfen.​


Schritte:​

  1. Importieren Sie beide Tabellen:
    • Gehen Sie zu Daten > Daten abrufen > Aus Tabelle/Range und wählen Sie Ihre erste Tabelle aus. Wiederholen Sie dies für die zweite Tabelle.
  2. Datentransformation:
    • Duplikate entfernen: In beiden Tabellen sollten doppelte Einträge basierend auf ID (ID 1 für Liste 1, ID 2 für Liste 2) entfernt werden, um die Grundstruktur zu vereinfachen.
    • Erstellen Sie eine Spalte zur Kennzeichnung von mehrfach auftretenden IDs (z. B. mit der Funktion COUNTIF oder direkt in Power Query).
  3. Zusammenführung:
    • Verknüpfen Sie die Tabellen über Daten kombinieren oder in Power Query mit den Feldern Name, Adresse und Hausnummer.
    • Nutzen Sie einen inneren Join, um eindeutig zuordenbare Datensätze zu verbinden.
    • Für unklare Zuordnungen (z. B. mehrfach auftretende IDs oder fehlende Werte) erstellen Sie eine separate Tabelle.
  4. Ergebnis exportieren:
    • Nachdem Power Query die Tabelle erstellt hat, laden Sie die Zieltabelle zurück nach Excel.
Wenn du das öfter machen musst, wäre ein VBA natürlich die bessere Lösung.
 
Das ist kniffelig, da Namen und Adressen nicht unbedingt eindeutig sind. Es gibt schon einige Mehrfamilienhäuser, wo mehrere Leute mit gleichem Namen wohnen. Genauso gibt es ein und dieselben Leute, die mehrere Adressen haben.

Du kannst so herangehen, aber wie gesagt, das kann zu fehlerhaften Zuordnungen führen. VBA ist nicht nötig:
Du erzeugst bei beiden Listen einen kombinierten Schlüssel aus Name, Adresse und Hausnummer, also z. B. "NameAdresseHausnummer" (=A1+B1+C1...). Zusätzlich lässt du in der zweiten Liste in einer Spalte die Anzahl der Vorkommen des neuen kombinierten Schlüssels zählen, z. B. mit ZÄHLENWENN, um Mehrfachvorkommen zu finden).
Über SVERWEIS kannst du nun in der ersten Liste die gewünschten Daten aus der zweiten Liste inkl. die Anzahl der Mehrfachvorkommen zuordnen, da der gleiche kombinierte Schlüssel in beiden Liste vorliegt.
Danach muss du dir dann "nur" noch per Hand die Zeilen Anschauen, wo Mehrfachvorkommen >1 ist. Von denen wurde immer nur die erste Zeile übernommen, den Rest musst du per Hand machen. Da führt kein Weg herum.
 
Zurück
Oben