[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Kalenderwoche ermitteln

Sprache / Programm: Excel ab Version 97
Beschreibung

Beide Programme bestimmen zu einem Datum die Kalenderwoche.

Das Programm KW() ist sehr kurz, denn es basiert auf der eingebaute Format-Funktion. Diese hat aber einen kleinen Fehler, sich in wenigen Fällen zeigt, wenn die Kalenderwoche zum letzten Montag im Jahr berechnet werden soll. Gelegentlich (z.B. 29.12.2003, 30.12.1991, 31.12.1979) wird hier KW 53 ausgegeben, obwohl der Tag bereits in KW 1 liegt.

VBA-Quelltext
Public Function KW(Datum As Date) As Byte
    KW = Format(Datum, "ww", vbMonday, vbFirstFourDays)
End Function

Public Function KalenderWoche(Datum As Date) As Byte
    Dim NeuJahr As Date, NeuJahrWochenTag As Byte
    Dim Silvester As Date, SilvesterWochenTag As Byte
    Dim BeginnWoche1 As Date, EndeWoche5x As Date
   
    Application.ScreenUpdating = True
   
    NeuJahr = DateSerial(Year(Datum), 1, 1)
    NeuJahrWochenTag = Weekday(NeuJahr, vbMonday)
    BeginnWoche1 = NeuJahr - NeuJahrWochenTag + 1 _
                    + IIf(NeuJahrWochenTag < 5, 0, 7)
   
    Silvester = DateSerial(Year(Datum), 12, 31)
    SilvesterWochenTag = Weekday(Silvester, vbMonday)
    EndeWoche5x = Silvester - SilvesterWochenTag _
                    + IIf(SilvesterWochenTag <= 3, 0, 7)
   
    Select Case Datum
        Case Is < BeginnWoche1
            Select Case NeuJahrWochenTag
                Case 1 To 4 ' Mo...Do
                    KalenderWoche = 1
                Case 5 ' Freitag
                    KalenderWoche = 53
                Case' Sa KW 52, am Ende von Schaltjahren KW 53
                    KalenderWoche = IIf((Year(Datum) - 1) Mod 4 = 0, 53, 52)
                Case 7 ' So -> KW 52
                    KalenderWoche = 52
            End Select
        Case Is > EndeWoche5x
            KalenderWoche = 1
        Case Else
            KalenderWoche = (Datum - BeginnWoche1) \ 7 + 1
    End Select

End Function
Argumente der Funktion/Prozedur

Datum

Datum, zu dem die Kalenderwoche ermittelt werden soll

Rückgabewert

Kalenderwoche als Zahl zwischen 1 und 53

Hinweis

Die Berechnung der Kalenderwoche in Deutschland beruht auf folgenden Bestimmungen:

  • Die Woche beginnt mit dem Montag

  • Zählung der KW beginnt am Anfang des Jahres mit der Woche, die wnigstens 4 Tage im neuen Jahr hat

Besondere Fallunterscheidung sind zu treffen, wenn die Kalenderwoche für die ersten Tage des Jahres bestimmt werden sollen:

  • Wenn Neujahr auf einen Mo..Do fällt, liegt es in KW 1

  • Wenn Neujahr auf einen Sonntag fällt, liegt es in KW 52

  • Wenn Neujahr auf einen Freitag fällt, liegt es in KW 53

  • Wenn Neujahr auf einen Samstag fällt, hängt es davon ab, ob das Vorjahr ein Schaltjahr war. Falls ja, liegt Neujahr in KW 53, sonst in KW 52.
Anwendungsgebiete, Fehler und Warnungen

Das Programm liefert die korrekte Kalenderwoche zwischen 1901 und 2099