Die Kalenderwoche wird immer wieder gerne für die Terminplanung hinzugezogen.
Leider gibt es in Excel und Access standardmäßig keine Funktion, die aus einem Datum die Kalenderwoche errechnet.
Achtung, einige Lösungen die im Netz kursieren sind fehlerhaft.
Wir haben hier für Sie die Formel zusammen gestellt um die exakte Kalenderwoche zu errechnen.
In Access:
Wenn(IstDatum([Datumsfeld]);Int(([Datumsfeld]-Wochentag([Datumsfeld];2)-DatSeriell(Jahr([Datumsfeld]+4-Wochentag([Datumsfeld];2));1;-10))/7);0)
Das Feld [Datumsfeld] ist zu ersetzen durch ihren Feldnamen.
Hinweis:Die kursierende Lösung DatTeil("ww";[datum];2;2) ist teilweise fehlerhaft. Die Kalenderwoche vom 29.12.2031 ist 1 und nicht 53.
In Excel:WENN(ISTZAHL(A1);KÜRZEN((A1-WOCHENTAG(A1;2)-DATUM(JAHR(A1+4-WOCHENTAG(A1;2));1;-10))/7);0)
Der Bezug A1 verweist auf ihre Datumszelle.
Hinweis:Excel-Funktion KALENDERWOCHE ist nicht Din-Konform. Laut Excel beginnt die Kalenderwoche 1 immer am 01.01. eines Jahres. Dies stimmt mit der deutschen Din-Norm nicht überrein. Hier ist die 1.KW immer die Woche in die der 04.01. fällt. Ist also der 1ste eines Jahres in einer anderen woche als der 4. zeigt die Kalenderwochen - Funktion von excel einen Falschen wert.
In VBA:
Public Function CalWeek(Date_Value As Variant) As Byte
'Created by Jean Pierre Allain
Dim tmp As Date
On Error GoTo Err_Proc
If IsNumeric(Date_Value) Then
tmp = Date_Value
ElseIf IsDate(Date_Value) Then
tmp = DateValue(Date_Value)
Else
GoTo Exit_Proc
End If
CalWeek = Int((tmp - Weekday(tmp, 2) - DateSerial(Year(tmp + 4 - Weekday(tmp, 2)), 1, -10)) / 7)
Exit_Proc:
Exit Function
Err_Proc:
Resume Exit_Proc
End Function
Anmerkung: Bei einem ungültigen Datum, liefern die Funktionen den Wert 0 zurück.
Die KALENDERWOCHE ist ab Excel 2010 Din-Konform, mit dem Schalter 21.
AntwortenLöschenDie beiden VBA Funktionen DatePart und Format haben hier tatsächlich ein Problem.
Das umgeht man wenn man beim Datum einen Dienstag nimmt.
=A1+1-WOCHENTAG(A1;3)
Also dDatum = dDatum +2 - Weekday(dDatum ,vbMonday)
Dann hab ich immer einen Dienstag und mit dem gehts besser.