Vielen Dank
Mike
[...]
>Ich benötige eine EXCEL-Funktion, die mir für ein gegebenes Datum
>zurückliefert ob es sich um einen Feiertag handelt oder nicht.
>Vorzugsweise sollten diese Funktion bundesländer-spezifisch konfigurierbar
>sein.
[...]
Also, ich beschäftige mich erst seit kurzem mit Excel. Aber für dieses Pro-
blem würde ich die Funktion SVERWEIS verwenden. Der Vorteil hierbei ist,
ich kann beliebig viele Feiertage oder auch andere Tage vorgeben.
Aber vielleicht kennen die anderen Leser eine bessere Lösung.
mit besten Grüßen
Oliver Felsch
******************************************************************
§§ Der kommerzielle Gebrauch meiner Email-Adresse ist verboten! §§
§§ The commercial use of my email-address is forbidden! §§
§§ LG Berlin AZ 16 O 201/98 und LG Berlin AZ 16 O 301/98 §§
******************************************************************
>Ich benötige eine EXCEL-Funktion, die mir für ein gegebenes Datum
>zurückliefert ob es sich um einen Feiertag handelt oder nicht.
>Vorzugsweise sollten diese Funktion bundesländer-spezifisch konfigurierbar
>sein.
>In irgend einem der gänigen Computer-Magazine habe in den letzten Monaten so
>etwas gesehen, kann mich aber nicht mehr erinnern, wo.
Hallo Mike,
bei der von dir gemeinten Feiertagsberechnung handelt es sich
wahrscheinlich um die Berechnung der beweglichen Feiertage auf der
Grundlage der Berechnung des Ostersonntags!?
Der Artikel hierzu stand in der c't 1998, Heft 18, S. 191.
Auf dem Server von Hans W. Herber (http://www.herber.de) wird gerade
ein Osterformel-Wettbewerb ausgetragen, und - besonders interessant -
Zusatzinformationen zu Kalenderberechnungen auf verschieden WebSites
angeboten. Schau dich doch hier einmal um!
MfG Frank
---
E-Mail: Thei...@t-online.de
= = = = = = = = = = = = = = =
Option Explizit
Option Basis 1
' -----------------------------------------------------------------
' Diese Funktion liefert WAHR, wenn ein ihr übergebenes
' Datum ein Feiertag ist; sonst liefert sie FALSCH
' Die Feiertagsberechnung ist vom deutschen Mathematiker Gauß.
' Durch das Verwenden eines statischen Datenfeldes müssen
' Ostern und die anderen Feiertage nur dann berechnet
' werden, wenn sich im Vergleich zum letzten Durchlauf
' das Jahr des Tages ändert, der untersucht werden soll.
'---------------------------------------------------------------------------
--------------------
' Bitte ändern Sie die Zahl der Feiertage, falls Sie
' das Feiertags-Datenfeld verkleinern oder vergrößern
Konst ANZAHLFEIERTAGE = 16
'---------------------------------------------------------------------------
--------------------
' Funktion IstFeiertag gibt »Wahr« zurück, wenn EinDatum auf einen Feiertag
fällt.
'---------------------------------------------------------------------------
--------------------
Funktion IstFeiertag(EinDatum Als DatumZeit)
Dim Zähler Als Ganz
Dim AktuellesJahr Als Ganz
Dim Ostersonntag Als DatumZeit
Statisch ZuletztberechnetesJahr Als Ganz
Statisch Feiertagsdatenfeld(ANZAHLFEIERTAGE; 2) Als Variant
AktuellesJahr = ZuGanz(Jahr(EinDatum))
Wenn AktuellesJahr <> ZuletztberechnetesJahr Dann
Ostersonntag = OsterDatum(AktuellesJahr)
Rufe FülleFeiertagsDatenfeld(Ostersonntag; AktuellesJahr;
Feiertagsdatenfeld())
Ende Wenn
' Anfangseinstellungen für das Durchsuchen des
' Feiertags-Datenfeldes
IstFeiertag = Falsch
Zähler = 1
' wir arbeiten uns durch das Feiertagsdatenfeld
Durchlaufe Solange Zähler <= ANZAHLFEIERTAGE
Solange Feiertagsdatenfeld(Zähler; 2) < EinDatum
Zähler = Zähler + 1
EndeSolange
Wenn Feiertagsdatenfeld(Zähler; 2) = EinDatum Dann
IstFeiertag = Wahr
Ende Wenn
Verlasse Durchlaufe
Schleife
ZuletztberechnetesJahr = AktuellesJahr
Ende Funktion
'---------------------------------------------------------------------------
--------------------
' Funktion Feiertag gibt den Namen des Feiertags zurück, wenn EinDatum auf
einen Feiertag fällt.
'---------------------------------------------------------------------------
--------------------
Funktion Feiertag(EinDatum Als DatumZeit)
Dim Zähler Als Ganz
Dim AktuellesJahr Als Ganz
Dim Ostersonntag Als DatumZeit
Statisch ZuletztberechnetesJahr Als Ganz
Statisch Feiertagsdatenfeld(ANZAHLFEIERTAGE; 2) Als Variant
AktuellesJahr = ZuGanz(Jahr(EinDatum))
Wenn AktuellesJahr <> ZuletztberechnetesJahr Dann
Ostersonntag = OsterDatum(AktuellesJahr)
Rufe FülleFeiertagsDatenfeld(Ostersonntag; AktuellesJahr;
Feiertagsdatenfeld())
Ende Wenn
' Anfangseinstellungen für das Durchsuchen des
' Feiertags-Datenfeldes
Feiertag = ""
Zähler = 1
' wir arbeiten uns durch das Feiertagsdatenfeld
Durchlaufe Solange Zähler <= ANZAHLFEIERTAGE
Solange Feiertagsdatenfeld(Zähler; 2) < EinDatum
Zähler = Zähler + 1
EndeSolange
Wenn Feiertagsdatenfeld(Zähler; 2) = EinDatum Dann
Feiertag = Feiertagsdatenfeld(Zähler; 1)
Ende Wenn
Verlasse Durchlaufe
Schleife
ZuletztberechnetesJahr = AktuellesJahr
Ende Funktion
' -----------------------------------------------------------------
' Dieser Code berechnet nach Gauß Ostersonntag und
' alle durch das Osterdatum definierten beweglichen
' Feiertage bis ins Jahr 2078
Privat Funktion OsterDatum(DiesesJahr Als Ganz)
' Variable für Zwischenrechnungen:
Dim ZR1
Dim ZR2
Dim ZR3
Dim ZR4
Dim ZR5
Dim ZR6
Dim ZR7
ZR1 = DiesesJahr Mod 19 + 1
ZR2 = Schneide(DiesesJahr / 100) + 1
ZR3 = Schneide(3 * ZR2 / 4) - 12
ZR4 = Schneide((8 * ZR2 + 5) / 25) - 5
ZR5 = Schneide(5 * DiesesJahr / 4) - ZR3 - 10
ZR6 = (11 * ZR1 + 20 + ZR4 - ZR3) Mod 30
Wenn (ZR6 = 25 Und ZR1 > 11) Oder _
ZR6 = 24 Dann ZR6 = ZR6 + 1
ZR7 = 44 - ZR6
Wenn ZR7 < 21 Dann ZR7 = ZR7 + 30
ZR7 = ZR7 + 7
ZR7 = ZR7 - (ZR5 + ZR7) Mod 7
Wenn ZR7 <= 31 Dann
OsterDatum = ZuDatumZeit(ZuZnF(ZR7) & _
". 3. " & ZuZnF(DiesesJahr))
Sonst
OsterDatum = Datumswert(ZuZnF(ZR7 - 31) & _
". 4. " & ZuZnF(DiesesJahr))
Ende Wenn
Ende Funktion
' -----------------------------------------------------------------
Privat Sub FülleFeiertagsDatenfeld(Ostersonntag Als DatumZeit; _
DiesesJahr Als Ganz; FTDF() Als Variant)
FTDF(1; 1) = "Neujahr"
FTDF(1; 2) = Datumszahl(DiesesJahr; 1; 1)
FTDF(2; 1) = "HeiligeDreiKönige"
FTDF(2; 2) = Datumszahl(DiesesJahr; 1; 6)
FTDF(3; 1) = "Karfreitag"
FTDF(3; 2) = Ostersonntag - 2
FTDF(4; 1) = "Ostersonntag"
FTDF(4; 2) = Ostersonntag
FTDF(5; 1) = "Ostermontag"
FTDF(5; 2) = Ostersonntag + 1
FTDF(6; 1) = "Tag der Arbeit"
FTDF(6; 2) = Datumszahl(DiesesJahr; 5; 1)
FTDF(7; 1) = "Christi Himmelfahrt"
FTDF(7; 2) = Ostersonntag + 39
FTDF(8; 1) = "Pfingstsonntag"
FTDF(8; 2) = Ostersonntag + 49
FTDF(9; 1) = "Pfingstmontag"
FTDF(9; 2) = Ostersonntag + 50
FTDF(10; 1) = "Fronleichnam"
FTDF(10; 2) = Ostersonntag + 60
FTDF(11; 1) = "Tag der deutschen Einheit"
FTDF(11; 2) = Datumszahl(DiesesJahr; 10; 3)
FTDF(12; 1) = "Allerheiligen"
FTDF(12; 2) = Datumszahl(DiesesJahr; 11; 1)
FTDF(13; 1) = "Heiliger Abend"
FTDF(13; 2) = Datumszahl(DiesesJahr; 12; 24)
FTDF(14; 1) = "1. Weihnachtsfeiertag"
FTDF(14; 2) = Datumszahl(DiesesJahr; 12; 25)
FTDF(15; 1) = "2. Weihnachtsfeiertag"
FTDF(15; 2) = Datumszahl(DiesesJahr; 12; 26)
FTDF(16; 1) = "Silvester"
FTDF(16; 2) = Datumszahl(DiesesJahr; 12; 31)
Ende Sub
MfG
Albert Draxler
Oliver Felsch schrieb in Nachricht <7b4fmr$fd7$1...@news2.kamp.net>...
>Hallo !
>
>[...]
>>Ich benötige eine EXCEL-Funktion, die mir für ein gegebenes Datum
>>zurückliefert ob es sich um einen Feiertag handelt oder nicht.
>>Vorzugsweise sollten diese Funktion bundesländer-spezifisch konfigurierbar
>>sein.
>Hallo !
>
>[...]
>>Ich benötige eine EXCEL-Funktion, die mir für ein gegebenes Datum
>>zurückliefert ob es sich um einen Feiertag handelt oder nicht.
>>Vorzugsweise sollten diese Funktion bundesländer-spezifisch konfigurierbar
>>sein.
>[...]
>
>Also, ich beschäftige mich erst seit kurzem mit Excel. Aber für dieses Pro-
>blem würde ich die Funktion SVERWEIS verwenden. Der Vorteil hierbei ist,
>ich kann beliebig viele Feiertage oder auch andere Tage vorgeben.
>
Hallo,
leider lieferte mein NS einige Tage nicht, daher kein org. Posting.
Das Feiertag.xls schicke ich auf Anforderung.
Pfuateu
Henner