Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellen vergleichen und zusammenführen
#1
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
Antworten Top
#2
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
Antworten Top
#3
Hallo,

Ich habe hier genau mein Problem gefunden:

http://www.office-loesung.de/ftopic352556_0_0_asc.php

Dort 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 :)
Antworten Top
#4
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:
  • Lucker11
Antworten Top
#5
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?
Antworten Top
#6
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:
  • Lucker11
Antworten Top
#7
Ja genau, aber wie bekomme ich dann die leere Zeile weg?
Antworten Top
#8
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:
  • Lucker11
Antworten Top
#9
Perfekt, vielen Dank  18
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste