Inhalte vergleichen - Excel VBA
Hallo lieber User,
ich habe ein kurze Frage und würde mich sehr freuen, wenn ihr mir damit weiterhelfen könnt.
Ich habe 2 Tabelle (A+B)
Tabelle A enthält Namen (Master meiner Name)
Tabelle B enthält den Namen (leider nicht immer identisch) und Materialnummern.
Monatlich kommt eine neue Tabelle B heraus in der ggf. neue Materialnummern dazugekommen sind.
Ich würde gerne Tabelle A, also meinen Master nutzen um monatlich nachzuschauen welche neuen Materialnummern dazu gekommen sind. Ich dachte daran, dass ich die beiden Namensspalten auf enthält miteinander vergleiche und wenn der Name aus meiner Masterdatei (Tabelle A) in Tabelle B vorkommt soll mit die zugehörige Materialnummer in eine neue Tabelle kopiert werden
Dafür habe ich mir eine Hilfspalte in Tabelle A gebastelt, die mir den Namen in *[Name]* umwandelt. Via Makro lasse ich Tabelle 2 mit meinem *[Name]* filtern und kopiere mir nach jeden *[Name]* die Ergebnisse in eine neue Tabelle.
Das funktioniert auch problemlos.
Allerdings würde ich mir gerne zusätzlich den echten Namen aus Tabelle 1 neben meine eben eingefügte Ergebnisse eintragen lassen. Doch leider überschreibt mir mein Makro immer alle vorherigen Einträge in Spalte C.
Irgendwo habe ich einen Denkfehler bzw. vergessen einzubauen, dass der tatsachliche Name aus Tabelle A x mal in Tabelle 3 eingefügt werden soll, ABER unterhalb des letzten Eintrags in Spalte C.
Heißt wenn ich beim Filtern 5 Ergebnis bekomme und diese kopiere, soll auch 5 mal der Name in Spalte C kopiert werden. Alle kommenden Ergebnisse sollen jeweils unter den vorhandenen eingefügt werden.
Anbei das Makro.
Wäre super, wenn mir jemand helfen könnte.
ich habe ein kurze Frage und würde mich sehr freuen, wenn ihr mir damit weiterhelfen könnt.
Ich habe 2 Tabelle (A+B)
Tabelle A enthält Namen (Master meiner Name)
Tabelle B enthält den Namen (leider nicht immer identisch) und Materialnummern.
Monatlich kommt eine neue Tabelle B heraus in der ggf. neue Materialnummern dazugekommen sind.
Ich würde gerne Tabelle A, also meinen Master nutzen um monatlich nachzuschauen welche neuen Materialnummern dazu gekommen sind. Ich dachte daran, dass ich die beiden Namensspalten auf enthält miteinander vergleiche und wenn der Name aus meiner Masterdatei (Tabelle A) in Tabelle B vorkommt soll mit die zugehörige Materialnummer in eine neue Tabelle kopiert werden
Dafür habe ich mir eine Hilfspalte in Tabelle A gebastelt, die mir den Namen in *[Name]* umwandelt. Via Makro lasse ich Tabelle 2 mit meinem *[Name]* filtern und kopiere mir nach jeden *[Name]* die Ergebnisse in eine neue Tabelle.
Das funktioniert auch problemlos.
Allerdings würde ich mir gerne zusätzlich den echten Namen aus Tabelle 1 neben meine eben eingefügte Ergebnisse eintragen lassen. Doch leider überschreibt mir mein Makro immer alle vorherigen Einträge in Spalte C.
Irgendwo habe ich einen Denkfehler bzw. vergessen einzubauen, dass der tatsachliche Name aus Tabelle A x mal in Tabelle 3 eingefügt werden soll, ABER unterhalb des letzten Eintrags in Spalte C.
Heißt wenn ich beim Filtern 5 Ergebnis bekomme und diese kopiere, soll auch 5 mal der Name in Spalte C kopiert werden. Alle kommenden Ergebnisse sollen jeweils unter den vorhandenen eingefügt werden.
Anbei das Makro.
Sub test()
For i = 1 To ThisWorkbook.Sheets("Tabelle1").UsedRange.Rows.Count
ThisWorkbook.Sheets("Tabelle2").Range("$A$1:$B$118862").AutoFilter Field:=2, Criteria1:=ThisWorkbook.Sheets("Customer").Range("C" & i)
ThisWorkbook.Sheets("Tabelle2").UsedRange.Offset(1).Copy
ThisWorkbook.Sheets("Tabelle3").Cells(Sheets("Tabelle3").Range("A65536").End(xlUp).Offset(1, 0).Row, 0) _
.PasteSpecial Paste:=xlPasteValues
For j = 1 To ThisWorkbook.Sheets("Tabelle3").Cells(Rows.Count, "A").End(xlUp).Row - 1
ThisWorkbook.Sheets("Tabelle1").Range("A" & i).Copy
ThisWorkbook.Sheets("Tabelle3").Cells(j, 3).Offset(1).PasteSpecial Paste:=xlPasteValues
Next j
ThisWorkbook.Sheets("Tabelle2").ShowAllData
Next i
End Sub
Wäre super, wenn mir jemand helfen könnte.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 357908
Url: https://administrator.de/contentid/357908
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo!
Ich habe mal folgenden Code zusammen gebastelt
Ich hoffe ich habe dein Problem richtig verstanden
Welche Office Version verwendest du?
Gruß
eisbein
Edit: Ich musste zum Filtern die Einträge der Tabelle 1, Spalte D ohne Hochkomma eintragen - also statt "*ABC*" nur *ABC*
Ich habe mal folgenden Code zusammen gebastelt
For i = 1 To ThisWorkbook.Sheets("Tabelle1").UsedRange.Rows.Count
ThisWorkbook.Sheets("Tabelle2").Range("$A$1:$B$118862").AutoFilter Field:=2, Criteria1:=ThisWorkbook.Sheets("Tabelle1").Range("C" & i)
Beginn = Worksheets("Tabelle3").Range("A65536").End(xlUp).Offset(1, 0).Row + 1
ThisWorkbook.Sheets("Tabelle2").UsedRange.Offset(1).Copy Destination:=Worksheets("Tabelle3").Range("A" & Worksheets("Tabelle3").Range("A65536").End(xlUp).Offset(1, 0).Row + 1)
Ende = Worksheets("Tabelle3").Range("A65536").End(xlUp).Offset(1, 0).Row - 1
For j = Beginn To Ende
ThisWorkbook.Sheets("Tabelle3").Range("D" & j) = ThisWorkbook.Sheets("Tabelle1").Range("A" & i)
Next j
Next i
Ich hoffe ich habe dein Problem richtig verstanden
Welche Office Version verwendest du?
Gruß
eisbein
Edit: Ich musste zum Filtern die Einträge der Tabelle 1, Spalte D ohne Hochkomma eintragen - also statt "*ABC*" nur *ABC*