2 Exceldatenbanken abgleichen?

Hallo Experten,

nachdem ich bei meiner letzten Anfrage viele gute Ideen zur Lösung meines Problems bekommen habe, versuche ich es mit dem aktuellen noch einmal.

Ich habe 2 Excel Listen.(.xls)
Beide enthalten die Spalten A-D;
A= Name
B= Straße
C= PLZ
D= Ort

Meine Tabelle 1 hat nun weitere 3 Spalten E,F,G.
Diese Inhalte sollen nun, wenn A-D in Tabelle 1 + 2 zusammen passen in Tabelle 2 eingetragen werden.
D.h. wenn Tabelle 1 und 2 der gleiche Name, Straße, PLZ, Ort (eventuell auch ohne Straße(schreibfehler)) vorkommt, soll dann in Tabelle 2 die Spalten E,F,G passend dazu eingefügt werden.

Geht das? Bzw. wie, leider bin ich mit meinen Makrokenntnissen noch nicht so weit, so dass es mich heute Nachmittag etwas frustriert hat.

Würde mich über Hilfestellungen freuen.

Gruß Mabi

D.h. wenn Tabelle 1 und 2 der gleiche Name, Straße, PLZ, Ort
(eventuell auch ohne Straße(schreibfehler)) vorkommt

hallo Mabi,

„eventuell“ ist schwierig zu programmieren:smile:
Soll nun Spalte B mitausgewertet werden oder nicht?

Gruß
Reinhard

Hallo Reinhard,

naja, die Spalte B in der 2ten Tabelle ist etwas unsicher bzw. manchmal nicht vorhanden.
Was bedeutet *eventuel* schwierig?

Gruß Mabi

Hallo,
ich würde die Aufgabe „zu Fuß“ erledigen.

Zuerst würde ich beide Dateien in einer dritten zusammenfügen.
[Tabellenblätter kopieren]

Anschließend füge jeweils eine Hilfsspalte ein mit folgender Formel zum runter kopieren:
A1&B1&C1&D1 [wenn alle Spalten geprüft werden sollen]

Stimmen Zellen beider Hilfsspalten zusammen kannst du in der Zeile die Inhalte von den Spalten E,F,G per Verweis() zusammenfügen.

Hast du das gemacht müssen noch alle Verweise wieder gelöscht werden:
Markiere alle relevanten Zellen, wähle
>markieren >kopieren >Inhalte einfügen >Werte

Jetzt bleibt noch das eine Tabellenblatt und die Hilfsspalte zu löschen.
Gruß Holger

Hallo Mabi,

Hier mal ein Makro das zwei Tabellen abgleichen kann, abgestimmt auf deine Spalten.
Name, PLZ und Ort werden „hart“, d.h. auf exakte Übereinstimmung, verglichen. Bei der Strasse wird „weich“ geprüft, d.h. bei exakter Übereinstimmung wird der Eintrag abgeglichen; wird keine übereinstimmende Strasse gefunden, dann wird die Info von dem 1. Eintrag übernommen, bei dem Name, PLZ und Ort übereinstimmen. Strassennamen werden dann zusätzlich aus der Quelle in weitere Spalten übertragen, so dass ggf. der manuelle Abgleich erleichtert wird.

Gruß
Franz

Sub Datenabgleich()
 'Daten aus zwei Tabellen abgleichen
 Dim wbQuelle As Workbook, wksQuelle As Worksheet
 Dim wbZiel As Workbook, wksZiel As Worksheet
 Dim ZeileZiel As Long, Spalte As Long
 Dim varName, varStrasse, varPLZ, varOrt
 Dim strAdresse1 As String, Zelle As Range, gefunden As Boolean
 Dim ZeileOhneStrasse As Long, varWeitere

 'Tabelle mit vorhandenen Inhalten in Spalten E bis F
 Set wbQuelle = Workbooks("Tabellen\_Datenabgleich.xls") 'Name anpassen!
 Set wksQuelle = wbQuelle.Worksheets("Tabelle1") 'Name - anpassen
 'Tabelle in der Inhalte aus Tabelle 1 eingetragen werden sollen
 Set wbZiel = Workbooks("Tabellen\_Datenabgleich.xls") 'Name anpassen!
 Set wksZiel = wbZiel.Worksheets("Tabelle2") 'Name - anpassen

 For ZeileZiel = 2 To wksZiel.Cells(wksZiel.Rows.Count, 1).End(xlUp).Row
 'Such-Werte aus Zeile in Zieltabelle einlesen
 varName = wksZiel.Cells(ZeileZiel, 1).Value 'Name
 varStrasse = wksZiel.Cells(ZeileZiel, 2).Value 'Adresse
 varPLZ = wksZiel.Cells(ZeileZiel, 3).Value 'PLZ
 varOrt = wksZiel.Cells(ZeileZiel, 4).Value 'Ort

 'Name in Spalte A der Quelle suchen
 Set Zelle = wksQuelle.Columns(1).Find(what:=varName, LookIn:=xlValues, \_
 lookat:=xlWhole)
 'Hilfswerte zurücksetzen
 gefunden = False
 ZeileOhneStrasse = 0
 varWeitere = ""
 If Not Zelle Is Nothing Then
 'Adresse der 1. Fundstelle merken
 strAdresse1 = Zelle.Address
 Do
 'Prüfen ob die anderen 3 Werte auch übereinstimmen
 If varPLZ = wksQuelle.Cells(Zelle.Row, 3) \_
 And varOrt = wksQuelle.Cells(Zelle.Row, 4) Then
 If varStrasse = wksQuelle.Cells(Zelle.Row, 2) Then
 gefunden = True
 'Spalten E bis F übertragen
 For Spalte = 5 To 7
 wksZiel.Cells(ZeileZiel, Spalte).Value \_
 = wksQuelle.Cells(Zelle.Row, Spalte).Value
 Next
 Exit Do
 Else
 'Zeile merken, wenn Name, PLZ und Ort übereinstimmen
 If ZeileOhneStrasse = 0 Then
 ZeileOhneStrasse = Zelle.Row
 Else
 'Weitere Strassen merken
 If varWeitere = "" Then
 varWeitere = wksQuelle.Cells(Zelle.Row, 2)
 Else
 varWeitere = varWeitere & wksQuelle.Cells(Zelle.Row, 2)
 End If
 End If
 End If
 End If
 'Nächsten Namens-Eintrag suchen
 Set Zelle = wksQuelle.Columns(1).FindNext(after:=Zelle)
 Loop Until Zelle.Address = strAdresse1
 End If
 If gefunden = False And ZeileOhneStrasse \> 0 Then
 'Spalten E bis F aus gemerkter Zeile übertragen
 For Spalte = 5 To 7
 wksZiel.Cells(ZeileZiel, Spalte).Value \_
 = wksQuelle.Cells(ZeileOhneStrasse, Spalte).Value
 Next
 'Strasse aus Quelle eintragen in Spalte H
 wksZiel.Cells(ZeileZiel, Spalte).Value \_
 = wksQuelle.Cells(ZeileOhneStrasse, 2).Value

 If varWeitere "" Then
 'weitere Strassen eintragen in Spalte I, wenn Name, PLZ und Ort \_
 mehrfach übereinstimmen
 wksZiel.Cells(ZeileZiel, Spalte + 1).Value = varWeitere
 End If
 End If
 Next
End Sub
1 „Gefällt mir“

Guten Morgen Mabi,

also ich habe das immer so gemacht:
In Tabelle 1
1.)ganz vorne (Spalte A) neu eingefügt - die relevanten Daten (bei dir die Spalten A-D) verkettet.
2. ) das gleiche nochmal in Tabelle 2
3. Mit einen SVerweis die entsprechenden Spalten in Tabelle 2 rübergeholt:
4.)Formel zum Herüberholen der ersten Spalte: =SVerweis(A§1;Tabelle1!A:E;6;0)
5.) diese Formel kopierst du in die beiden folgenden Spalten und änderst in der Formel die 6 auf 7 bzw. 8)

Wenn die Daten in beiden Tabellen übereinstimmen, erscheint dann der entsprechende Text in Tabelle 2.Stimmen die Daten nicht überein erscheint #NV. Durch einen Filter kannst du ja das #NV entsprechent löschen.
Wenn du dich gut auskennst in Excel, kannst du den SVerweis noch mit einer Wenn-Formel kombinieren und damit gleich bewirken, dass die Spalten frei bleiben, wenn die Verkettungen nicht übereinstimme.

Gruß