24.02.2022, 14:13
Hallo,
dann würde es so aussehen:
dann würde es so aussehen:
Code:
Sub Ergaenzung()
Const QuellIDSpalte = 32 'Spalte STID in Quelle
Const FirstDat = 123 'erste Spalte mit Datum in Quelle
Dim Quelle As Object, Ziel As Object, erg As Variant
Dim QZeile As Long, QSpalte As Long, STID As String, ZZeile As Long, MyDiff As Long
Set Quelle = ThisWorkbook.Sheets("Master_VNB")
Set Ziel = ThisWorkbook.Sheets("Gesamt_mit_Forecast")
With Quelle
MyDiff = DateDiff("m", Ziel.Cells(1, 3), .Cells(1, FirstDat))
For QZeile = 2 To .Cells(Rows.Count, QuellIDSpalte).End(xlUp).Row
STID = .Cells(QZeile, QuellIDSpalte)
Set erg = Ziel.Range("A:A").Find(what:=STID, lookat:=xlWhole)
If Not (erg Is Nothing) And STID <> "" Then 'ID auch in Ziel und nicht leer
ZZeile = erg.Row + 1
Ziel.Rows(ZZeile).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'Zeile einfügen
Ziel.Cells(ZZeile, 1) = STID
QSpalte = FirstDat
Do
If Val(.Cells(QZeile, QSpalte)) > 0 Then 'wert vorhanden
Ziel.Cells(ZZeile, QSpalte - FirstDat + 3 + MyDiff) = Quelle.Cells(QZeile, QSpalte)
End If
QSpalte = QSpalte + 1
Loop Until IsEmpty(.Cells(1, QSpalte))
End If
Next QZeile
End With
End Sub
Gruß der AlteDresdner (Win11, Off2021)