Beschreibung
Steht in A2 ein Datum, so ermitteln folgende Formeln zu dem enthaltenen Monat
die Anzahl der davon berührten Kalenderwochen KW (4, 5 oder 6),
B2: =WAHL((DATUM(JAHR(A2);MONAT(A2)+1;1)-A2+TAG(A2)-16+REST(A2-TAG(A2)-1;7))/7;4;5;6)
kürzer (Christian Hapke, 2007.01.23):
B2: =WAHL((TAG(DATUM(JAHR(A1);MONAT(A1)+1;))-15+REST(A1-TAG(A1)-1;7))/7;4;5;6)
Anwendung: Entwurf eines eigenen Kalenders (siehe unten)
die erste entsprechende KW-Nummer
C2: =GANZZAHL((A2-TAG(A2)-DATUM(JAHR(A2);1;-4-REST(DATUM(JAHR(A2);1;2);7)))/7)
sowie die letzte entsprechende KW-Nummer
D2: =C2-1+B2
Februar 2010 hat 4 KW, mit den Nr.n 5 bis 8. Das wiederholt sich so erst im Februar 2038. Sonst liegen stets 5 oder 6 KW pro Monat vor, wobei sich 6 KW nach frühestens 3 Monaten wiederholen.
http://www.excelformeln.de/formeln.html?welcher=364
ist zwar umfangreicher und spezialisierter, ermittelt aber die
Jahreswechsel-KW nach der DIN richtig, wonach überlappende KW in das Jahr
gehören, in welchem mehr als die Hälfte ihrer Tage liegt - und auch so
bezeichnet werden! Das ist hier nicht der Fall, da
sich das im Einzelfall noch nachbilden lässt.
Jahreskalenderblatt mit Wochentagen als gemeinsame Vorspalte für die Monate
Ein normaler Jahreskalender stellt pro Monat 31 Tage dar. Wie viele Tage benötigt er jedoch pro Monat, damit gleiche Wochentage über die Monate nebeneinander stehen (also ein Januar- neben einem Februarmontag)? Die Antwort ist 37. Für eine sinnvolle Optik sind dies in der ersten und letzten Zeile die Wochenenden, da Kalenderwochen damit nicht geteilt werden:
01 Sa (Nr. 1)
02 So
03 Mo
04 Di
05 Mi
06 Do
07 Fr
08 Sa (Nr. 2)
09 So
...
36 Sa (Nr. 6)
37 So
VBA
Hier noch zwei VBA-Möglichkeiten für die Ermittlung der KW aus einem Beitrag von Thomas Ramel vom 2007.01.23:
Function KW_Datum(Jahr As Integer, ByVal KW As Byte, Optional ByVal Wochentag
As Byte = 1) As Date
'Berechnet das Datum eines beliebigen Wochentages einer beliebigen KW nach DIN
1355
Dim d As Date
d = DateSerial(Jahr, 1, -3)
KW_Datum = d + 7 * KW - Weekday(d, 2) + Wochentag
End Function
Function KW_DIN(Datum As Date) As Integer
'von Christoph Kremer, Aachen
'Berechnet die KW nach DIN 1355 unter Verzicht auf die DatePart()-Methode
'Die DatePart()-Methode "versagt" unter anderem bei
29.12.2003/31.12.2007
Dim t&
t = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
KW_DIN = (Datum - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
End Function