Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Funktion Kalenderwoche liefert falsche Werte

65 views
Skip to first unread message

Dr. Eckehard Pfeifer

unread,
Jan 5, 2000, 3:00:00 AM1/5/00
to
Hallo, Excel rechnet hier falsch. Einen Loesungsvorschlag findest Du unter
den Tipps und Tricks des VBA Magazins: www.vba-magazin.de

--
Eckehard Pfeifer

(http://home.t-online.de/home/Dr.Eckehard.Pfeifer)

Das VBA-Magazin - ein Blick lohnt sich immer: www.vba-magazin.de

Ausführliche Informationen zur ViBAT: http://www.vba-magazin.de/vibat

Christian Zeller

unread,
Jan 5, 2000, 3:00:00 AM1/5/00
to
Kann mit jemand sagen warum die Funktion "Kalenderwoche(23.11.99;2)" den
Wert 48 als Woche
liefert und nicht 47?

Danke!

Christian

Frank Arendt-Theilen

unread,
Jan 5, 2000, 3:00:00 AM1/5/00
to
Hallo Christian,
XL arbeitet bei der Kalenderwochenermittlung standardmäßig nicht nach
der DIN1355. Benutze daher die folgende Funktion:

Function DINKw(Tag)
DINKw = DatePart("ww", Tag, vbMonday, vbFirstFourDays)
End Function

Anwendung:
A1: 05.01.2000
A2: =DinKw(A1) -> 1

MfG Frank
__________________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel
E-Mail: Thei...@t-online.de


Am Wed, 5 Jan 2000 12:46:18 +0100, schrieb "Christian Zeller"
<christia...@deuter.com> in microsoft.public.de.excel zu
"Funktion Kalenderwoche liefert falsche Werte":

Michael Schwimmer

unread,
Jan 5, 2000, 3:00:00 AM1/5/00
to

Frank Arendt-Theilen <Thei...@t-online.de> schrieb in im Newsbeitrag:
pef67ss2cqpsp720o...@4ax.com...

> Hallo Christian,
> XL arbeitet bei der Kalenderwochenermittlung standardmäßig nicht nach
> der DIN1355. Benutze daher die folgende Funktion:

Hallo Frank,
deine Funktion liefert leider auch falsche Werte, z.B. am 29.12.2003 .Hier eine
angepasste Funktion.

Function Kalwoche(Tag)
Kalwoche = ((DatePart("ww", Tag, 2, 2) = 53) _
And (Day(Tag) >= 29) And (WeekDay(Tag, 2) = 1)) _
* 52 + DatePart("ww", Tag, 2, 2)
End Function

MfG
Michael

Frank Arendt-Theilen

unread,
Jan 6, 2000, 3:00:00 AM1/6/00
to
Hallo Michael,
danke für deine Korrektur. Bleibt aber meine Frage, wie bist du auf
die Fehlberechnung gekommen?

MfG Frank
__________________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel
E-Mail: Thei...@t-online.de


Am Wed, 5 Jan 2000 23:08:27 +0100, schrieb "Michael Schwimmer"
<Schw...@T-Online.de> in microsoft.public.de.excel zu "Re: Funktion
Kalenderwoche liefert falsche Werte":

>Function Kalwoche(Tag)

Jörg Nissen

unread,
Jan 6, 2000, 3:00:00 AM1/6/00
to
Ich weiß nicht, ob ich der Auslöser für die Funktion DINKW war, als das
Problem der Kalenderwoche hier mal zur Sprache kam, da die Funktion aber
u.a. von mir mal ausgedacht und eingesetzt wurde, hier ein Nachtrag.

Die Funktion DatePart macht den 29.12.2003, wenn Parameter 3 und/oder 4
gesetzt werden, zu Wochentag 1 (also Sonntag) statt Wochentag 2 (also
Montag). Die Anzeige des Wochentagnamens funktioniert aber wieder korrekt.
Daraus resultiert die falsche Zuordnung. Sieht nach einem Bug in VBA aus.
Das Gleiche passiert auch bei der Format-Funktion.

Unter der Voraussetzung, daß wie im Fall des 29.12.2003 die Funktion
DatePart ohne 3. und 4. Parameter den richtigen Wochentag liefert, kann die
Funktion DINKW so angepaßt werden:

Public Function DINKW(Datum As Date) As Integer
DINKW = DatePart("ww", Datum + DatePart("w", Datum) _
- DatePart("w", Datum, vbMonday,
vbFirstFourDays), _
vbMonday, vbFirstFourDays)
End Function

Mir ist klar, daß diese Funktion nicht richtig funktioniert, wenn das
Problem auch auf Samstag/Sonntag fällt (wegen Wochentagnummer 7 bzw. 1). In
der Hoffnung, daß VBA nicht so schlimm falsch läuft, nur diese kleine
Anpassung.


Jörg

Frank Arendt-Theilen <Thei...@t-online.de> schrieb in im Newsbeitrag:

8sh77ssjh21vjqljc...@4ax.com...

Frank Arendt-Theilen

unread,
Jan 6, 2000, 3:00:00 AM1/6/00
to
Hallo Jörg,
vielen Dank für die ausführliche Erläuterung, aber dennoch, wie kann
ich im Vorfeld bei der Benutzung der Funktion mir Klarheit
verschaffen, das demnächst diese Funktion eine Falschberechnung
liefert? Wie kam Michael auf den 29.12.2003?

MfG Frank
__________________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel
E-Mail: Thei...@t-online.de


Am Thu, 6 Jan 2000 09:40:32 +0100, schrieb "Jörg Nissen"
<joerg....@t-online.de> in microsoft.public.de.excel zu "Re:

Marco Amistadi

unread,
Jan 6, 2000, 3:00:00 AM1/6/00
to
Hallo Frank, Jörg und Michael,

ich hätte mal erst eine allgemeine Frage für mich als Excel97-
anfänger. Wie bekomme ich Excel dazu, daß es die Function DINKW
(habe ich in Tabelle1 und DieseArbeitsmappe probiert) auch verwenden
kann? Wenn ich über den Assistenden gehe, kommt eine Fehlermeldung,
daß die Funktion keine Argumente will und wenn ich den Namen DINKW(a1)
direkt eingebe, kommt #NAME? zurück :(.

Wie muss ich das bitte schön anstellen?

MfG
Marco


Michael Schwimmer

unread,
Jan 6, 2000, 3:00:00 AM1/6/00
to
> liefert? Wie kam Michael auf den 29.12.2003?

Hallo Frank,
irgendwann im November war das mal Thema in microsoft.public.de.vb .
Selber wäre ich aber auch nicht drauf gekommen, dass da was nicht passt.
BTW, die angepasste Funktion von Jörg funktioniert auch nicht, zumindestens
am 4.1.2004 und 6.1.2008 wird KW 53 zurückgeliefert.
Hier nochmal meine Funktion, aber etwas kürzer.

Function Kalwoche(Tag)
Kalwoche = (DatePart("ww", Tag, 2, 2) = 53 _
And (Day(Tag) >= 29) And Tag Mod 7 = 2) _


* 52 + DatePart("ww", Tag, 2, 2)
End Function

MfG
Michael

Frank Arendt-Theilen

unread,
Jan 6, 2000, 3:00:00 AM1/6/00
to
Hallo Marco,
wechsle in die VBA-Umgebeung und trage die Funktion in einem
Standardmodul ein (Menü EINFÜGEN/Modul).
Die Module 'Tabelle1' und 'DieseArbeitsmappe' sind Dokumentmodule und
am besten für Ereignis-Makros geeignet.
Verwendung durch die direkte Eintragung in der Zelle oder per
Funktionsassitenten (Kategorie: Benutzerdefiniert):
A1: 06.01.2000
A2: = DINKW(A1), Ergebnis -> 1


Am Thu, 06 Jan 2000 14:09:38 +0100, schrieb Marco Amistadi
<ma...@amistadi.de> in microsoft.public.de.excel zu "Re: Funktion
Kalenderwoche liefert falsche Werte":

>Hallo Frank, Jörg und Michael,

Tom Bihr

unread,
Jan 7, 2000, 3:00:00 AM1/7/00
to
Am Wed, 05 Jan 2000 14:01:14 +0100, Frank Arendt-Theilen
<Thei...@t-online.de> schrieb

>Hallo Christian,
>XL arbeitet bei der Kalenderwochenermittlung standardmäßig nicht nach
>der DIN1355. Benutze daher die folgende Funktion:
>

>Function DINKw(Tag)
> DINKw = DatePart("ww", Tag, vbMonday, vbFirstFourDays)
>End Function

>>Kann mit jemand sagen warum die Funktion "Kalenderwoche(23.11.99;2)" den


>>Wert 48 als Woche
>>liefert und nicht 47?

Die Erklaerung steckt im letzten Argument von DatePart (siehe o.a. Funktion
DINKw). Es gibt unterschiedliche Moeglichkeiten, Wochen zu zaehlen. Excel
unterstuetzt drei:

- erste Woche ist Woche, die den 1.1. enthaelt
- erste Woche ist Woche, die den 4.1. enthaelt
- erste Woche ist die erste, die vollstaendig im gleichen Jahr liegt

Voreingestellt in XL ist und von der Funktion Kalenderwoche benutzt wird die
erste Variante. In Deutschland gueltig ist aber die zweite. Deswegen.

Gruss, Tom
---
T. Bihr @ work

Peter Schürer

unread,
Jan 8, 2000, 3:00:00 AM1/8/00
to
Hallo Marco!

Die Tastenkombination <ALT+F11> bringt Dich in den VBA-Editor.
Dort musst Du die Funktion schreiben oder reinkopieren.
Erst dann kannst Du sie verwenden!!!!!!

Bei Fragen, melde Dich per E-Mail :-)

Gruß
Peter

Marco Amistadi schrieb:

Marco Amistadi

unread,
Jan 9, 2000, 3:00:00 AM1/9/00
to
Hallo Frank und Peter,

danke vielmals für die Tips. Es lag daran, daß ich die
Funktion in 'DieseArbeitsmappe' oder 'Tabelle1' eintragen
wollte :(. Nun gut, mit 'Modul' gefällt mir das nun besser :).

Ähm ... etwas OT, aber trotzdem mal gefragt: Gibts unter XL8
noch die Möglichkeit Add-Ins zu erstellen? Ich will 'meine'
Statusleistenanzeige mir als Add-In basteln und einfach am
Anfang laden, damit alle Mappen drauf zugreifen können. Oder
sollte ich die Funktion lieber in die Personl.xls (?) schreiben?

Für Tips und Anregungen wäre ich euch Dankbar.

Wer die Funktion (Fortschrittsanzeige in der Statusleiste)
auch haben will, möchte sich bitte mal per Mail melden.

mailto:ex...@pixeltester.de

MfG
Marco

Frank Arendt-Theilen

unread,
Jan 9, 2000, 3:00:00 AM1/9/00
to
Hallo Marco,
Add-Ins können wie in XL7 erstellt werden. Allerdings mußt/(solltest)
du alle Makro bezüglich der Symbolleisten nach XL8 umschreiben.

MfG Frank
__________________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel
E-Mail: Thei...@t-online.de


Am Sun, 09 Jan 2000 02:26:34 +0100, schrieb Marco Amistadi


<ma...@amistadi.de> in microsoft.public.de.excel zu "Re: Funktion
Kalenderwoche liefert falsche Werte":

>Hallo Frank und Peter,

0 new messages