AW: Spalteneinträge in separate Zeilen schreiben
15.01.2019 10:30:30
Matthias
Moin!
Dann hier mal die Anpassung dazu. Schau aber bitte mal. In deinem Beispiel geht bei Zeile 6 der Ergebnisse das Datum am 11.06.19 los. Die Formel und der Kalender sagen aber 10.06.19. Der Ergebnis wird immer noch in Tabelle3 eingetragen. Da der Code etwas breit ist könntenbei den Formel Umbrüche drin sein. Die einfach weider rausmachen.
Sub auswerten()
Dim daten
Dim spalten As Long, zeilen As Long
Dim zeile As Long, spalte As Long
Dim zielzeile As Long
Dim ziel, quelle
Dim ende As Boolean
Dim tempwd As Long, tempfd As Long, tempy As Long, tempm As Long
Application.ScreenUpdating = False
Set ziel = Tabelle3
Set quelle = ActiveSheet
zielzeile = 3
spalten = quelle.Cells(5, quelle.Columns.Count).End(xlToLeft).Column
zeilen = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(zeilen, spalten))
ziel.Columns("F:G").NumberFormat = "@"
For zeile = 11 To zeilen Step 19
For spalte = 15 To spalten
If daten(zeile, spalte) "" Then
ziel.Cells(zielzeile, 1) = daten(zeile, 1)
ziel.Cells(zielzeile, 2) = daten(zeile, 2)
ziel.Cells(zielzeile, 3) = daten(zeile, 3)
ziel.Cells(zielzeile, 4) = daten(zeile, 4)
ziel.Cells(zielzeile, 5) = daten(zeile, spalte)
ziel.Cells(zielzeile, 6) = CStr(daten(7, spalte) & "/" & daten(5, spalte))
tempy = daten(5, spalte)
tempm = daten(7, spalte)
tempfd = DateSerial(tempy, 1, 1)
tempwd = Application.WorksheetFunction.Weekday(tempfd, 2)
ziel.Cells(zielzeile, 8) = tempfd + (tempm - IIf(tempwd > 4, 0, 1)) * 7 - _
Application.WorksheetFunction.Weekday(tempfd + (tempm - IIf(tempwd > 4, 0, 1)) * 7, 2) + 1
'DATUM(G2;1;1)+(F2-WENN(WOCHENTAG(DATUM(G2;1;1);2)>4;0;1))*7-WOCHENTAG(DATUM(G2;1;1) _
+(F2-WENN(WOCHENTAG(DATUM(G2;1;1);2)>4;0;1))*7;2)+1
ende = False
Do While spalte 4, 0, 1)) * 7 - _
Application.WorksheetFunction.Weekday(tempfd + (tempm - IIf(tempwd > 4, 0, 1)) * 7, 2) + 5
'DATUM(G2;1;1)+(F2-WENN(WOCHENTAG(DATUM(G2;1;1);2)>4;0;1))*7-WOCHENTAG(DATUM(G2;1;1) _
+(F2-WENN(WOCHENTAG(DATUM(G2;1;1);2)>4;0;1))*7;2)+5
zielzeile = zielzeile + 1
End If
Next spalte
Next zeile
Application.ScreenUpdating = True
MsgBox "Fertig"
End Sub
VG