Funktion KW-Ermittlung - Wert bei leeren Zellen unterdrücken

13/01/2010 - 19:13 von Stefan Theobald | Report spam
Hallo@all!

ich habe mir die Funktion zum ermitteln der Kalenderwoche nach DIN-Norm in
meine Arbeitsmappe gemacht.
Diese funktioniert auch - nur bin ich noch nicht ganz glücklich.
Kopiert man die Formel weiter runter, und die Zellen sind leer, wird immer
52 reingeschrieben.
Ich wollte das mit dem "If IsDate(dat) = True Then" unterdrücken, aber das
interessiert den garnicht. DAT wüsste doch der Wert sein, der an die Funktion
übergeben wird - oder bin ich da falsch?

Wie kann ich es also unterdrücken, dass bei leeren Zellen ein icht
gewünschter Wert erscheint?



Gruß
Stefan


Function DINKW(dat As Date) As Integer

'Aufruf / Verwendun: =MAPPE.XLS!DINKW(A1)

'Bei der Berechnung der Kalenderwoche gibt XL scheinbar ein falsches
Ergebnis aus.
'Wie wird die Kalenderwoche richtig berechnet?
'XL berechnet die Kalenderwoche standardmàßig nach amerikanischer Norm.
'Für Deutschland gilt die internationale Norm ISO 8601 (1973).
'1976 wurde festgelegt, dass die Woche mit dem Montag beginnt:
'DIN 1355 (1974), DIN EN 28601 (1993). Dies bedeutet für die Berechnung der
Kalenderwoche:
'Der 1. Januar eines Jahres gehört erst dann zur ersten Kalenderwoche,
'wenn dieser Tag auf einen Montag, Dienstag, Mittwoch oder Donnerstag fàllt.
'Falls der 1. Januar ein Freitag, Samstag oder Sonntag ist, zàhlt er noch
zur letzten Kalenderwoche
'des vorherigen Jahres. Weiterhin können der 29., 30. und 31.12. eines Jahres
'schon zur 1. Kalenderwoche des neuen Jahres gehören.

If IsDate(dat) = True Then

Dim kw As Integer

kw = Int((dat - DateSerial(Year(dat), 1, 1) + _
((Weekday(DateSerial(Year(dat), 1, 1)) + 1) _
Mod 7) - 3) / 7) + 1

If kw = 0 Then

kw = DINKW(DateSerial(Year(dat) - 1, 12, 31))

ElseIf kw = 53 And (Weekday(DateSerial(Year(dat), 12, 31)) - 1) Mod
7 <= 3 Then

kw = 1

End If

DINKW = kw

Else

DINKW = 0

End If

End Function
 

Lesen sie die antworten

#1 Claus Busch
13/01/2010 - 19:28 | Warnen spam
Hallo Stefan,

Am Wed, 13 Jan 2010 10:13:01 -0800 schrieb Stefan Theobald:

ich habe mir die Funktion zum ermitteln der Kalenderwoche nach DIN-Norm in
meine Arbeitsmappe gemacht.
Diese funktioniert auch - nur bin ich noch nicht ganz glücklich.
Kopiert man die Formel weiter runter, und die Zellen sind leer, wird immer
52 reingeschrieben.
Ich wollte das mit dem "If IsDate(dat) = True Then" unterdrücken, aber das
interessiert den garnicht. DAT wüsste doch der Wert sein, der an die Funktion
übergeben wird - oder bin ich da falsch?



du rufst doch deine Funktion in einer Zelle auf. Ändere dort die Formel zu:
=WENN(A1="";"";DINKW(A1))


Mit freundlichen Grüssen
Claus Busch
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Ähnliche fragen