123660
Goto Top

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:

9dcc82185bb1e782299a236f375b1143

Tabelle 2 und 3:

3ee6f31621c351abba7d7f5bee94dd69
216a4a9d3226f748b2cdcf366514c03a

Content-ID: 287959

Url: https://administrator.de/contentid/287959

Ausgedruckt am: 25.11.2024 um 15:11 Uhr

colinardo
Lösung colinardo 10.11.2015 aktualisiert um 13:16:50 Uhr
Goto Top
Hallo Achraf,
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
Grüße Uwe
123660
123660 10.11.2015 um 10:56:07 Uhr
Goto Top
Hallo Uwe,
Vielen Dank für die schnelle Antwort, es funktioniert so weit aber es werden paar Dimensionen eingefügt obwohl die schon existieren.
haben sie vielleicht dazu eine Idee?
Grüße Achraf
colinardo
colinardo 10.11.2015 aktualisiert um 11:12:36 Uhr
Goto Top
Groß- oder Kleinschreibung unterschiedlich oder unsichtbare Leerzeichen vorhanden ? Wenn ich das weiß kann ich es dir anpassen das Groß- und Kleinschreibung nicht beachtet wird. Dachte eben bei Einheiten ist es teilweise ja essentiell ob ein Buchstabe groß oder klein geschrieben wird!
opalka
opalka 10.11.2015 um 11:15:59 Uhr
Goto Top
Hallo,

Zeile 9:
dic.Add lcase( trim(cell.Value) ), ""  

Zeile 15 & 25:

If Not dic.Exists( lcase( trim(cell.Value) )) Then 


Dann ignoriert er klein und groß und leerzeichen.

Gruß
123660
123660 10.11.2015 um 11:22:27 Uhr
Goto Top
Das stimmt, es gibt ein Groß- oder Kleinschreibung unterschied, aber das muss man in diesem Fall nicht beachten.
Danke dir.
123660
123660 10.11.2015 um 11:29:34 Uhr
Goto Top
Hallo opalka,

Danke für die Unterstützung, die Änderung ergeben ein"Laufzeitfehler457".

Grüße Achraf
opalka
opalka 10.11.2015 um 11:36:35 Uhr
Goto Top
hm, bei mir klappt's. Führ den Code doch mal mit F8 aus und schau wo er aussteigt.
colinardo
colinardo 10.11.2015 aktualisiert um 11:41:23 Uhr
Goto Top
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.
Code ist oben angepasst ..
opalka
opalka 10.11.2015 um 11:44:00 Uhr
Goto Top
@colinardo Ups, doppelter Schlüssel. Die Meldung kam mir bekannt vor face-smile
123660
123660 10.11.2015 um 12:15:43 Uhr
Goto Top
Ich habe die zwei Tabellen 2 und 3 nochmal kontrolliert , paar Dimensionen sind mehrmals wiederholt.
Vielleicht habe ich das Problem nicht besser erklärt. deswegen will ich nun ein Beispiel geben.

Tabelle 1: Nm3/h . mm3/Nm3 . % . s
Tabelle 2: Nm3/h . mm3/Nm3 . % . s . min
Tabelle 3: Nm3/h . mm3/Nm3 . % . s. mA

jetzt soll Tabelle 1 so aussehen:

Tabelle 1: Nm3/h . mm3/Nm3 . % . s . min . mA.
colinardo
colinardo 10.11.2015 aktualisiert um 12:36:47 Uhr
Goto Top
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.
123660
123660 10.11.2015 um 13:11:25 Uhr
Goto Top
Vielen Vielen Dank Uwe.