mit folgendem Code will ich die anhand der Spalte AC in Quell- und Zieldatei vergleichen, welche Zeilen zusammengehören und dann die Werte aus den Spalten N-S aus von der Quelle in das Ziel übertragen.
Allerdings wird nicht anhand der Spalte AC geprüft, welche Zeilen von Quelle und Ziel zusammengehören, sondern einfach alles in gleicher Reihenfolge rüber kopiert.
Erkennt jemand, woran es hakt?
Sub DatenuebernahmeJahre(strTabelleJahr As String)
Dim Dateiname
Dim wksQuelldatei, wksZieldatei As Worksheet
Dim lngQuelleIndex, lngZielIndex, s As Long
Dim arrQuelleWerte, arrQuelleID
Dim arrZielWerte, arrZielID
Dim dic As Object
Dim rngQuelleWerte, rngQuelleID As Range
Dim rngZielWerte, rngZielID As Range
Dateiname = Application.GetOpenFilename(filefilter:="xlsm-Dateien (*.xlsm), *.*)", Title:="Quelldatei auswählen")
If Dateiname = "Falsch" Then
MsgBox "Keine Datei ausgewählt!"
Else
If Dateiname False Then
Workbooks.Open (Dateiname)
Set wksQuelldatei = ActiveWorkbook.Sheets(strTabelleJahr)
Set wksZieldatei = ThisWorkbook.Sheets(strTabelleJahr)
'Autofilter in Quelldaten löschen
If wksQuelldatei.FilterMode Then
wksQuelldatei.ShowAllData
End If
Set rngQuelleID = wksQuelldatei.UsedRange.Columns(29)
Set rngQuelleWerte = wksQuelldatei.UsedRange.Range("N:S")
Set rngZielID = wksZieldatei.UsedRange.Columns(29)
Set rngZielWerte = wksZieldatei.UsedRange.Range("N:S")
arrQuelleWerte = rngQuelleWerte.Value
arrQuelleID = rngQuelleID.Value
arrZielWerte = rngZielWerte.Value
arrZielID = rngZielID.Value
Set dic = CreateObject("Scripting.Dictionary")
For lngQuelleIndex = 1 To UBound(arrQuelleID, 1)
dic(arrQuelleID(lngQuelleIndex, 1)) = lngQuelleIndex
Next
For lngQuelleIndex = 3 To UBound(arrZielID, 1)
If dic.exists(arrZielID(lngQuelleIndex, 1)) Then
lngZielIndex = dic(arrZielID(lngQuelleIndex, 1))
For s = 1 To UBound(arrQuelleWerte, 2)
arrZielWerte(lngQuelleIndex, s) = arrQuelleWerte(lngQuelleIndex, s)
Next
End If
Next
'Autofilter in Buchungen prüfen löschen
If wksZieldatei.FilterMode Then
wksZieldatei.ShowAllData
End If
rngZielWerte.Value = arrZielWerte
wksQuelldatei.Parent.Close False
End If
End If
End Sub
Danke euch :)