Hallo
VBA Maktos sind universell, die Spalten müssen zum Suchen und kopieren nicht gleich sein! Die ID Nr. können in verschiedenen Spalten stehen, ich finde sie trotzdem. Nach dem Find können beliebig viele Spalten kopiert werden. Was wohin kopiert wird geht aus dem Code selbst hervor.
Ich versuche mal den Code in der Master Datei zu erklaeren, vielleicht schaffst du es dann selbst in auf deine Wünsche zu aendern. Die Variable "lzMs" ist die letzte ID Zeile in der Master Datei. Ich lösche danach die Hilfsspalte C. Wenn da Daten sind wie Datum bitte den Befehl ClearContents löschen. Die For Next Schleife sucht über Set rFind jede ID Nr. in der Update Tabelle. Wenn gefunden kommt dieser Teil: AC.Offset(0, 2) = rFind.Offset(0, 1)
Im Klartext heisst es das die Spalte C den Wert Teilmenge bekommt. Dazu benutzt man Offset(0, 2) für Spalte C
Offset funktioniert nach dem Z/S Prinzip. Z=Zeile, S=Spalte! Offset(1, 3) heist: 1 Zeile nach unten, drei Spalten nach rechts! AC.Offset(-1, -2) heisst: 1 Zeile nach oben, 2 Spalten nach Links von der Activen Zelle! Hat man das System verstanden kann man jeden Wert aus beliebigen Quell Spalten in jede beliebige Ziel-Spalte kopieren. Eınfach mal auspropbieren, ein bisschen rum Experementieren.
Solltest du trotzcem nicht zurechtkommen bitte angeben oder Beispieldatei mit Lösung schicken was aus welchen Spalten wohin soll??
mfg Gast 123
Code:
lzMs = .Cells(Rows.Count, 1).End(xlUp).Row
'Spalte C als Hilfsspalte für Ergebnis löschen
.Range("C2:C" & lzMs).ClearContents
'Schleife zum UpDat Daten kopieren
For Each AC In .Range("A2:A" & lzMs)
Set rFind = UpDat.Columns(1).Find(What:=AC, After:=Cells(1, 1), LookIn:= _
xlValues, LookAt:=xlWhole, SearchDirection:=xlNext, MatchCase:=False)
If Not rFind Is Nothing Then
'AC.Offset(0, 1) = rFind.Offset(0, 1) 'Code zum Preis überschreiben!
AC.Offset(0, 2) = rFind.Offset(0, 1) 'Demo Code schreibt in Spalte C
n = n + 1
End If
Next AC