Startseite

Kalenderwoche berechnen (Funktion)

Inzwischen haben mich viele Anfragen erreicht, wie man die Kalenderwoche berechnen und in einen Kalender einfügen kann. Hier nun eine Funktion zur Berechnung der Kalenderwoche, die auf der Microsoftseite zur Verfügung gestellt wird. Im folgenden werde ich zeigen, wie man die Funktion oder ein daraus abgeleitetes Makro in einen Kalender einbauen kann.
Diese Funktion berechnet die Kalenderwoche aus einem vorgegebenen Datum:
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
Die Funktion wird in den Visual Basic-Editor eingefügt. Dann steht sie im Funktions-Assisten zur Verfügung.
Es wird die erste Zelle, in der die Kalenderwoche erscheinen soll, selektiert, dann rufen wir die Funktion unter Benutzerdefiniert auf.
OK drücken, es öffnet sich dieses Fenster:
Jetzt wird die Zelle, die den Bezug liefern soll selektiert:
Auf Ende drücken, die Formel in alle gewünschten Zellen kopieren, so sieht das Ergebnis aus:

Kalenderwoche berechnen (Makro)

Dieses Makro habe ich aus der Funktion abgeleitet:
Sub kalenderwoche()
Dim a As Integer, dat As Date
For r = 1 To 365
dat = Cells(r, 1)
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 = 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
If Format(Cells(r, 1), "dddd") = "Montag" Then Cells(r, 2) = "KW " & a
Next r
End Sub

Dieses Makro erzeugt die Ziffern für die Kalenderwoche und trägt sie rechts neben dem Datum ein, wenn der Wochentag ein Montag ist (erster Tag der deutschen Kalenderwoche). Bei diesem Beispiel bin ich davon ausgegangen, daß alle Tage des Jahres untereinander in der Spalte A stehen. Das kann man natürlich auf andere Kalendertypen anpassen.
So kann das Ergebnis aussehen:

Kalenderwoche berechnen (Tabellenformel)

Nicht unerwähnt bleiben soll die Möglichkeit, die Kalenderwoche per Tabellenfunktion zu berechnen. So sieht die entsprechende Formel aus: =KALENDERWOCHE(A1;1). A1 steht für den Datumsbezug, das heißt, für dieses Datum wird die Kalenderwoche berechnet. Die 1 hinter dem Semikolon legt fest, mit welchem Tag die Woche beginnt (1 = Sonnatg, 2 = Montag). Laut Excel-Hilfe ist auch eine 3 möglich, das verursacht auf meinem Rechner einen Fehler (sowohl bei Excel 97, wie bei Excel 2000, als auch bei xP). Ferner ist zu beachten, dass die Formel beim Jahreswechsel nicht die deutschen Regeln beachtet. (Siehe 2. Bild)!