Tipps & Tricks
26.01.2007, 15:00 Uhr
Excel: Wochennummer ermitteln
Problem: Ich habe ein VBA-Programm für Excel geschrieben, das einen Waschküchen-Belegungsplan automatisch für ein ganzes Jahr erstellt. Nun möchte ich das Programm erweitern, brauche dafür aber eine Funktion, die mir die Wochennummer (1-52) zurückgibt.
Lösung: Für die Ermittlung der Wochennummer gibt es in Excel die Funktion «Kalenderwoche». Allerdings rechnet die nach amerikanischem Standard, der mit der hierzulande verwendeteten DIN-Norm nicht übereinstimmt.
Hinweis: Einen im Sept. 2018 aktualisierten Artikel mit Tipps zur Berechnung der Kalenderwoche selbst finden Sie hier.
Daher muss die Kalenderwoche manuell berechnet werden, und dafür können Sie folgende Formel verwenden:
=KÜRZEN((A2-DATUM(JAHR(A2+3-REST(A2-2;7));1;REST(A2-2;7)-9))/7)
Ist das Berechnen der Kalenderwoche jedoch Bestandteil einer anderen Formel, dann kann es recht schnell unübersichtlich werden. Microsoft bietet daher in der Knowledge Base [1] ein Makro an, das die Kalenderwoche nach DIN berechnet:
Function dt_Kalenderwoche(dat As Date) As Integer
Dim a As Integer
a = Int((dat - DateSerial(Year(dat), 1, 1) + _
((WeekDay(DateSerial(Year(dat), 1, 1)) + 1) Mod 7) - 3) / 7) + 1
If a = 0 Then
a = dt_Kalenderwoche(DateSerial(Year(dat) - 1, 12, 31))
ElseIf a = 53 And (WeekDay(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 <= 3 Then
a = 1
End If
dt_Kalenderwoche = a
End Function
Dim a As Integer
a = Int((dat - DateSerial(Year(dat), 1, 1) + _
((WeekDay(DateSerial(Year(dat), 1, 1)) + 1) Mod 7) - 3) / 7) + 1
If a = 0 Then
a = dt_Kalenderwoche(DateSerial(Year(dat) - 1, 12, 31))
ElseIf a = 53 And (WeekDay(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 <= 3 Then
a = 1
End If
dt_Kalenderwoche = a
End Function
Die Funktion rufen Sie dann wie gewohnt auf, bspw. mit
=dt_Kalenderwoche(A1)
Das berechnet die Kalenderwoche des Datums in Zelle A1.
Kommentare
Es sind keine Kommentare vorhanden.