Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
548to552
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
548to552
548to552
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kalenderwoche eingeben, Datum ausgeben

Kalenderwoche eingeben, Datum ausgeben
17.01.2005 16:05:07
Fritz
Hallo Leute,
wir haben hier ein Problem mit einigen Excel-Auswertungen. Man kann die KW angeben und er spuckt automatisch Anfangs- und Enddatum der Woche aus.
Das lief bis jetzt ganz gut. Nur dieses Jahr gab es mit der Funktion Probleme weil der 1. und 2. Januar auf Wochenende fielen. Ergo lieferte die Funktion für die KW1/2005 Datum 27.12.2004 bis 02.01.2005 zurück.
Aufgrund Zeitmangels habe ich dann im WWW nach dem Problem gesucht und einige Lösungsansätze gefunden (auch hier). Doch leider konnte mich keine Funktion bis jetzt zufrieden stellen.
Das was bisher funktioniert - also meine derzeitige Lösung - macht spätestens beim nächsten Schaltjahr Probleme (2009) bzw. in der 1. KW 2004. Eine andere verwendete Lösung bringt mir ein für einige KWs in 2004 falsche Daten.
Ihr seid die letzte Hoffnung. Hat einer eine gescheite Funktion die alle WorstCase Szenarios abfängt? Wäre echt klasse (auch für das Archiv - denk ich mal).
Gruß und danke,
Fritz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kalenderwoche eingeben, Datum ausgeben
u_
Hallo,
wenn die in Excel integrierte Funktion für die KW benutzt wird, stimmt das in Deutschland nicht. Musst du wohl in die USA umziehen ;-))
Korrekte Berechnung siehe hier: http://www.excelformeln.de/formeln.html?welcher=7
Gruß
AW: Kalenderwoche eingeben, Datum ausgeben
Holger
Hallo Fritz,
hier ein wenig Code.
Hatte bisher keine Sorgen damit.
Hoffe es hilft dir.
Gruß Holger.
'Description: Die Kalenderwoche eines Datums ermitteln
'Parameters: [datCheckDate]
'Return: Integer
'* DT03 ****************************************************
Public

Function GetGermanCalendarWeek( _
Optional ByVal datCheckDate As Date) As Integer
Dim datLastDay As Date
Dim intWeek As Integer
If datCheckDate = 0 Then datCheckDate = Date
'nach DIN1355...
intWeek = DatePart("ww", datCheckDate, vbMonday, _
vbFirstFourDays)
If intWeek = 53 And Month(datCheckDate) = 12 Then
datLastDay = CDate("12/31/" & DatePart("yyyy", datCheckDate))
If Weekday(datLastDay, vbMonday) >= 4 Then
GetGermanCalendarWeek = intWeek
Else
GetGermanCalendarWeek = 1
End If
Else
GetGermanCalendarWeek = intWeek
End If
End Function

'Description: Die Anzahl der Kalenderwochen eines Jahres ermitteln
'Parameters: intYear
'Functions: GetGermanCalendarWeek
'Return: Integer
'* DT04 ****************************************************
Public

Function CountGermanCalendarWeeks( _
ByVal intYear As Integer) As Integer
If DatePart("w", DateSerial(intYear, 1, 1), _
vbMonday) = 4 Or DatePart("w", DateSerial(intYear, _
12, 31), vbMonday) = 4 Then
CountGermanCalendarWeeks = 53
Else
CountGermanCalendarWeeks = 52
End If
End Function

'Description: Den ersten Tag einer bestimmten Kalenderwoche ermitteln
'Parameters: intWeek, intYear
'Functions: CountGermanCalendarWeeks
'Return: Date
'* DT05 ****************************************************
Public

Function GetFirstDayOfGermanCalendarWeek( _
ByVal intWeek As Integer, _
ByVal intYear As Integer) As Date
Dim datStartDate As Date
If intWeek <= CountGermanCalendarWeeks(intYear) Then
datStartDate = DateAdd("d", _
DateSerial(intYear, 1, 4), -DatePart _
("w", DateSerial(intYear, 1, 4), vbMonday) + 1)
GetFirstDayOfGermanCalendarWeek = DateAdd("ww", _
intWeek - 1, datStartDate)
End If
End Function

Anzeige
AW: Kalenderwoche eingeben, Datum ausgeben
Fritz
Dank dir! Funktioniert super!
AW: Kalenderwoche eingeben, Datum ausgeben
17.01.2005 16:21:31
uwe
Also ob ich dir helfen kann, weiß ich nicht.
Aber ich nehme immer folgende Formel zur Bestimmung der Kalenderwoche.
=GANZZAHL((C2283-(JAHR(C2283+REST((8-WOCHENTAG(C2283));7)-3)&".1.1")-3+REST((WOCHENTAG((JAHR(C2283+REST((8-WOCHENTAG(C2283));7)-3)&".1.1"))+1);7))/7+1)
in C2283 steht das entsprechende Datum.
Uwe

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige