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:
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:
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)!