@ > Home > Inhalt > Kalenderwochen KW eines Monats  Excel 97+

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