Kalenderwoche anzeigen

Hallo kann ich das in Excel ?

Danke

Hallo kann ich das in Excel ?

Hi Sam,
wenn du das Add Inn Analysefunktionen einbindest haste eine Funktion Kalenderwoche, aber sie rechnet falsch(amerikanisch).
Datum in A1:
=KÜRZEN((A1-DATUM(JAHR(A1+3-REST(A1-2;7));1;REST(A1-2;7)-9))/7)
Gruß
Reinhard

Hallo kann ich das in Excel ?

Ja. Entweder Du nimmst die Funktion KALENDERWOCHE.
— snip (Online-Hilfe Excel XP) —
Wenn diese Funktion nicht verfügbar ist und der Fehlerwert #NAME? zurückgegeben wird, installieren und laden Sie das Add-In Analyse-Funktionen.
— snip —

Oder Du schreibst Dir ein Makro in einem Modul wie folgt:

Public Function GetKW(pdatDatum As Date) As Long
 GetKW = DateDiff("ww", CDate("1.1." & Year(pdatDatum)), pdatDatum, vbMonday) + 1
End Function

Dann, wenn bleistiftsweise in A1 das Datum steht und in B1 die Kalenderwoche dargestellt werden soll, kommt in B1 die Formel: =GetKW(A1)

Gruß, Manfred

nicht korrekt

Hallo kann ich das in Excel ?

Ja. Entweder Du nimmst die Funktion KALENDERWOCHE.

Public Function GetKW(pdatDatum As Date) As Long
GetKW = DateDiff(„ww“, CDate(„1.1.“ & Year(pdatDatum)),
pdatDatum, vbMonday) + 1
End Function

Hallo Manfred,
Formel1: =KALENDERWOCHE(A1)
Formel2: =GetKW(A1)
Formel3:=KÜRZEN((A1-DATUM(JAHR(A1+3-REST(A1-2;7));1;REST(A1-2;7)-9))/7)

Datum Formel1 Formel2 Formel3
31.12.99 53 53 52
01.01.00 1 1 52
02.01.00 2 1 52
16.09.00 38 38 37

nur Formel3 ist korrekt.

1976 wurde der Wochenbeginn auf Montag festgelegt. (Vorher gab’s die Kalenderwoche in dem Sinne also nicht.)
Die erste Woche des Jahres ist definiert als die Woche, in die mindestens 4 Tage fallen = DIN 1355
Entspricht der internationalen Norm ISO 8601 (1988); übernommen von der EU als EN 28601 (1992) und in Deutschland als DIN EN 28601 (1993) umgesetzt.

Gruß
Reinhard

1 „Gefällt mir“

Hallo,

Wie Reinhard schon sagte, rechnet diese Funktion nach dem amerikanischen Kalender. Ich habe jedoch eine Funktion, die einwandfrei funktioniert. hoffe du kommst mit VBA zurecht. Diese benutze ich:


Function KWoche(KwDatum)
'Deklaration der Konstanten
Const Sonntag = 1
Const Montag = 2
Const Dienstag = 3
Const Mittwoch = 4
Const Donnerstag = 5
Const Freitag = 6
Const Samstag = 7
'Fehlersprungmarke setzen
On Error GoTo Fehlermarke:
'Bestimmung der zur Berechnung notwendigen Variablen
Jahresanfang = DateSerial(Year(KwDatum), 1, 1)
VorJahresEnde = DateSerial(Year(KwDatum) - 1, 1, 1)
WochentagJahresanfang = Weekday(Jahresanfang)
WochentagVorJahresEnde = Weekday(VorJahresEnde)
differenz = DateValue(KwDatum) - Jahresanfang
'bestimmt die Kalenderwoche des ersten Tags des Jahres
'ab Donnerstag -> KW1 des aktuellen Jahres
'bis Mittwoch -> KW 52/53 des letzten Jahres
'mittels der Differenz wird dann die KW des Eingabedatums berechnet
Select Case WochentagJahresanfang
Case Donnerstag
'Prüfung ob es sich um eine Schaltjahr handelt
If (differenz - (WochentagJahresanfang - 6)) / 7

Hallo Gemeinde

meines Wissens arbeitet diese Funktion auch korrekt.

sollte Ich mich täuschen, so bitte Ich um aufklärung.

Function kw(d As Date) As Integer
t = DateSerial(Year(d + (8 - WeekDay(d)) Mod 7 - 3), 1, 1)
kw = (d - t - 3 + (WeekDay(t) + 1) Mod 7) \ 7 + 1
End Function

Hallo, Reinhard!

[…]mindestens 4 Tage fallen = DIN 1355

Sch…Normen. Dabei habe ich eine „Normentante“ bei mir im Büro sitzen… Danke aber mal. Jetzt werde ich mir Deine Formel mal genauer ansehen, versuchen, sie zu verstehen und vor allem in meine Programme einbauen, wo ich es brauche. Wobei: Ist doch egal, ob ich sie verstehe oder nicht.

Merci+Gruß,
Manfred