Hallo Der-Fritz,
die Automatisierung kann man sowohl per Makro realisieren als auch mit Formeln. In welche Richting möchtest du deine Lösung vorrantreiben ?
Gruß
Franz
Hier der Ansatz für eine Makro-Lösung.
Sub Erstellen\_Monatsplan()
Dim wks As Worksheet
Dim lngJahr As Long
Dim strMonat As String
Dim intMonat As Integer
Dim datDatum As Date
Dim lngZeile As Long
Set wks = ActiveWorkbook.Sheets(1) 'Monatsplan = 1. Tabellenblatt in aktiver \_
Arbeitsmappe
With wks
lngJahr = .Range("B2").Value
strMonat = .Range("B3").Value
'Nummer des Monats aus Eingabewert in Zelle B3 ermitteln
Select Case strMonat
Case "Januar", "January", "Jan": intMonat = 1
Case "Februar", "February", "Feb": intMonat = 2
Case "März", "March", "Mrz", "Mar": intMonat = 3
Case "April", "Apr": intMonat = 4
Case "Mai", "May": intMonat = 5
Case "Juni", "June", "Jun": intMonat = 6
Case "Juli", "July", "Jul": intMonat = 7
Case "August", "Aug": intMonat = 8
Case "September", "Sep": intMonat = 9
Case "Oktober", "October", "Okt", "Oct": intMonat = 10
Case "November", "Nov": intMonat = 11
Case "Dezember", "December", "Dez", "Dec": intMonat = 12
Case Else
MsgBox "Bitte Schreibweise des Monats prüfen" & vbLf & \_
"Januar, Februar, März, April, Mai, Juni, Juli, August, September, " \_
& "Oktober, November, Dezember"
Exit Sub
End Select
datDatum = DateSerial(lngJahr, intMonat, 1)
lngZeile = 6 'Zeile ab der das Datum der Arbeitstage (Mo -Fr) eingetragen werden soll
'Datum Mo-Fr für alle Werktage in Spalte A (1) eintagen
Do
If Weekday(datDatum, vbMonday) Month(datDatum) Then Exit Do
datDatum = datDatum + 1
Loop
End With
End Sub
Ansatz für eine Formellösung - Zelle A5 ist dabei benutzerdefiniert als „Tag“ formatiert.
In Zelle A5 wird der 1. Tag des Monats berechent, in Zelle A6 der 1. Arbeitstag des Monats.
AB Zelle A24 wird geprüft, ob der Tag in den nächsten Monat fallen würde.
Tabellenblattname: Monatsplan-Formel
A B
1 Reinigungsplan
2 Jahr 2012
3 Monat März
4
5 Tag
6 Donnerstag 01.03.12
7 Freitag 02.03.12
8 Montag 05.03.12
9 Dienstag 06.03.12
10 Mittwoch 07.03.12
11 Donnerstag 08.03.12
12 Freitag 09.03.12
13 Montag 12.03.12
14 Dienstag 13.03.12
15 Mittwoch 14.03.12
16 Donnerstag 15.03.12
17 Freitag 16.03.12
18 Montag 19.03.12
19 Dienstag 20.03.12
20 Mittwoch 21.03.12
21 Donnerstag 22.03.12
22 Freitag 23.03.12
23 Montag 26.03.12
24 Dienstag 27.03.12
25 Mittwoch 28.03.12
26 Donnerstag 29.03.12
27 Freitag 30.03.12
28
29
Benutzte Formeln:
A5: =DATUM(B2;INDEX({1;2;3;4;5;6;7;8;9;10;11;12};VERGLEICH(B3;{"Januar";"Februar";"März";"April";"Mai";"Juni";"Juli";"August";"September";"Oktober";"November";"Dezember"};0));1)
A6: =A5-TAG(A5)+3-MIN(2;REST(A5-TAG(A5)+1;7))
A7: =WENN(WOCHENTAG(A6;2)=5;A6+3;A6+1)
A8: =WENN(WOCHENTAG(A7;2)=5;A7+3;A7+1)
A9: =WENN(WOCHENTAG(A8;2)=5;A8+3;A8+1)
A10: =WENN(WOCHENTAG(A9;2)=5;A9+3;A9+1)
A11: =WENN(WOCHENTAG(A10;2)=5;A10+3;A10+1)
A12: =WENN(WOCHENTAG(A11;2)=5;A11+3;A11+1)
A13: =WENN(WOCHENTAG(A12;2)=5;A12+3;A12+1)
A14: =WENN(WOCHENTAG(A13;2)=5;A13+3;A13+1)
A15: =WENN(WOCHENTAG(A14;2)=5;A14+3;A14+1)
A16: =WENN(WOCHENTAG(A15;2)=5;A15+3;A15+1)
A17: =WENN(WOCHENTAG(A16;2)=5;A16+3;A16+1)
A18: =WENN(WOCHENTAG(A17;2)=5;A17+3;A17+1)
A19: =WENN(WOCHENTAG(A18;2)=5;A18+3;A18+1)
A20: =WENN(WOCHENTAG(A19;2)=5;A19+3;A19+1)
A21: =WENN(WOCHENTAG(A20;2)=5;A20+3;A20+1)
A22: =WENN(WOCHENTAG(A21;2)=5;A21+3;A21+1)
A23: =WENN(WOCHENTAG(A22;2)=5;A22+3;A22+1)
A24: =WENN(A23="";"";WENN(MONAT(WENN(WOCHENTAG(A23;2)=5;A23+3;A23+1))MONAT(A23);"";WENN(WOCHENTAG(A23;2)=5;A23+3;A23+1)))
A25: =WENN(A24="";"";WENN(MONAT(WENN(WOCHENTAG(A24;2)=5;A24+3;A24+1))MONAT(A24);"";WENN(WOCHENTAG(A24;2)=5;A24+3;A24+1)))
A26: =WENN(A25="";"";WENN(MONAT(WENN(WOCHENTAG(A25;2)=5;A25+3;A25+1))MONAT(A25);"";WENN(WOCHENTAG(A25;2)=5;A25+3;A25+1)))
A27: =WENN(A26="";"";WENN(MONAT(WENN(WOCHENTAG(A26;2)=5;A26+3;A26+1))MONAT(A26);"";WENN(WOCHENTAG(A26;2)=5;A26+3;A26+1)))
A28: =WENN(A27="";"";WENN(MONAT(WENN(WOCHENTAG(A27;2)=5;A27+3;A27+1))MONAT(A27);"";WENN(WOCHENTAG(A27;2)=5;A27+3;A27+1)))
A29: =WENN(A28="";"";WENN(MONAT(WENN(WOCHENTAG(A28;2)=5;A28+3;A28+1))MONAT(A28);"";WENN(WOCHENTAG(A28;2)=5;A28+3;A28+1)))