123660
10.11.2015, aktualisiert um 13:16:50 Uhr
1311
12
0
Exceltabelle mit anderen 2 tabellen vergleichen
Hallo zusammen!
Ich stehe vor folgendem Problem und bräuchte wieder eure Hilfe.
In Excel 2010 muss ich Tabelle 1 mit zwei anderen Tabellen vergleichen "Tabelle2 und Tabelle3",bzw. Alle Dimensionen in Tabelle 1 in die andren beide Tabelle suchen wenn sie da sind okey aber alles was fehlt um eine neue spalte in Tabelle 1 erweitern "kopieren und einfügen".
Vielen Dank für eure Unterstützung.
Gruß Achraf.
Tabelle 1:
Tabelle 2 und 3:
Ich stehe vor folgendem Problem und bräuchte wieder eure Hilfe.
In Excel 2010 muss ich Tabelle 1 mit zwei anderen Tabellen vergleichen "Tabelle2 und Tabelle3",bzw. Alle Dimensionen in Tabelle 1 in die andren beide Tabelle suchen wenn sie da sind okey aber alles was fehlt um eine neue spalte in Tabelle 1 erweitern "kopieren und einfügen".
Vielen Dank für eure Unterstützung.
Gruß Achraf.
Tabelle 1:
Tabelle 2 und 3:
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 287959
Url: https://administrator.de/contentid/287959
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo Achraf,
gibt hier zwar schon diverse Posts zum Thema Tabellen vergleichen und ergänzen, aber dann eben nochmal:
Grüße Uwe
gibt hier zwar schon diverse Posts zum Thema Tabellen vergleichen und ergänzen, aber dann eben nochmal:
Sub CompareAndAppend()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, rngSearch As Range, dic As Object
Set dic = CreateObject("Scripting.Dictionary")
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
Set ws3 = Sheets(3)
For Each cell In ws1.Range("A1", ws1.Range("A1").End(xlToRight))
strVal = LCase(Trim(cell.Value))
If Not dic.Exists(strVal) Then
dic.Add strVal, ""
End If
Next
With ws2
For Each cell In .Range("E1", .Range("E1").End(xlDown))
strVal = LCase(Trim(cell.Value))
If Not dic.Exists(strVal) Then
dic.Add strVal, ""
ws1.Range("A1").End(xlToRight).Offset(0, 1).Value = Trim(cell.Value)
End If
Next
End With
With ws3
For Each cell In .Range("G1", .Range("G1").End(xlDown))
strVal = LCase(Trim(cell.Value))
If Not dic.Exists(strVal) Then
dic.Add cell.Value, ""
ws1.Range("A1").End(xlToRight).Offset(0, 1).Value = Trim(cell.Value)
End If
Next
End With
End Sub
Zitat von @123660:
Danke für die Unterstützung, die Änderung ergeben ein"Laufzeitfehler457".
Das kommt daher das du in deiner Tabelle1 einen doppelten Wert in deiner Liste drin hattest "Hub/min". Da ist die initiale Füllung des Dictionaries natürlich ausgestiegen... Habe das nun zusätzlich abgefangen.Danke für die Unterstützung, die Änderung ergeben ein"Laufzeitfehler457".
Code ist oben angepasst ..
@colinardo Ups, doppelter Schlüssel. Die Meldung kam mir bekannt vor
Vielleicht habe ich das Problem nicht besser erklärt. deswegen will ich nun ein Beispiel geben.
Genau das tut mein Code ja !Ich meinte ja das in Tabelle 1 ja schon ein Duplikat vorhanden war, aber die Situation habe ich ja abgefangen. den korrigierten Code findest du in meinem obigen Post.
Funktioniert hier wie gewünscht, kann dir gerne das Demo-Sheet zukommen lassen.