Registriert seit: 04.06.2017
Version(en): 2016
Hallo :)
Ich habe zwei Tabellen und möchte diese zusammenführen.
Tabelle 1 enthält alte Daten und Tabelle 2 neue Daten
Von Tabelle 2 sollen die ersten beiden Spalten mit den ersten beiden Spalten der Tabelle 1 verglichen werden.
-> Ist der Eintrag in Tabelle 1 schon vorhanden, soll Spalte B mit Spalte B aus Tabelle 2 überschrieben werden
-> Ist kein entsprechender Eintrag vorhanden, sollen einfach die neuen Werte aus Tabelle 2 (Spalte A und B) auch in Tabelle 1 Spalte (A,B) übernommen werden.
Kann mir da jemand behilflich sein?
Liebe Grüße
Lukas
Registriert seit: 05.09.2017
Version(en): 2013
Hallo,
können/dürfen die Daten in Tabelle1 sortiert werden?
Dürfte dann durch kopieren der kompletten Daten aus Tabelle2 nach Tabelle1 und anschließendem RemoveDuplicates einfach möglich sein.
Mach bitte mal eine Beispielmappe mit ein paar Beispieldaten und lade die hier hoch.
Gruß Werner
Registriert seit: 04.06.2017
Version(en): 2016
20.01.2021, 15:31
(Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2021, 15:31 von Lucker11.)
Hallo,
Ich habe hier genau mein Problem gefunden:
http://www.office-loesung.de/ftopic352556_0_0_asc.phpDort ist auch die Lösung für das Problem, allerdings verstehe ich den Code überhaupt gar nicht, könnte mir den vielleicht jemand erklären?
Code:
Sub DatenAbgleich()
Dim arrT2 As Variant, arrT1 As Variant, arrRest As Variant
Dim i As Long, j As Long, k As Long
With Sheets("Tabelle1")
arrT1 = .Range("A1", .Range("H" & Rows.Count).End(xlUp))
End With
With Sheets("Tabelle2")
arrT2 = .Range("A1", .Range("H" & Rows.Count).End(xlUp))
End With
For i = 1 To UBound(arrT2)
For j = 1 To UBound(arrT1)
If arrT1(j, 1) = arrT2(i, 1) Then
arrT1(j, 1) = ""
Exit For
End If
Next
Next
k = 1
ReDim arrRest(1 To 8, 1 To k)
arrRest(1, 1) = "folgende Datensätze sind nicht in Tabelle2 enthalten"
For j = 1 To UBound(arrT1)
If arrT1(j, 1) <> "" Then
k = k + 1
ReDim Preserve arrRest(1 To 8, 1 To k)
For i = 1 To 8
arrRest(i, k) = arrT1(j, i)
Next
End If
Next
With Sheets("Tabelle1")
.UsedRange.ClearContents
.Cells(1, 1).Resize(UBound(arrT2), 8) = arrT2
.Cells(UBound(arrT2) + 1, 1).Resize(UBound(arrRest, 2), 8) = WorksheetFunction.Transpose(arrRest)
End With
End Sub
Wäre Euch sehr dankbar :)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
mal ganz kurz - die Tabellendaten werden nicht direkt im Blatt verglichen, sondern in Arrays - das macht es schneller - duplikate in den Arrays entfernt, der Rest in ein dritts Aray übernommen und diese Daten dann in Tabelle1 angefügt.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Lucker11
Registriert seit: 04.06.2017
Version(en): 2016
Ich habe es leider nichtmal geschafft das Programm so umzuschreiben, dass die Meldung/Zeile „folgende Datensätze...“ nicht auftaucht, sondern die alten Daten einfach unter die neuen geschrieben werden. Was muss ich da verändern in dem Programm?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
na, die Meldung wegzubekommen ist doch recht einfach, die steht da im Code drin:
arrRest(1, 1) = "folgende Datensätze sind nicht in Tabelle2 enthalten"
Die oder gleich die ganze Zeile nimmst Du weg. Dadurch hättest Du maximal erst mal nur eine leere Zeile dazwischen.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Lucker11
Registriert seit: 04.06.2017
Version(en): 2016
Ja genau, aber wie bekomme ich dann die leere Zeile weg?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
Schiebe mal k=k+1 etwas runter zwischen next und end if
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Lucker11
Registriert seit: 04.06.2017
Version(en): 2016
Perfekt, vielen Dank