HOLDIDAYS
Beschreibung:
Listet in einer Spalte alle Feiertage eines oder mehrerer Jahre und eines dt. Bundeslandes.
Syntax:
=HOLIDAYS(Jahr;Land)
Beispiel:
=HOLIDAYS(2017;"Brem") ergibt die 12 Feiertage von Bremen 2017
01.01.2017 14.04.2017 16.04.2017 17.04.2017 01.05.2017 25.05.2017
04.06.2017 05.06.2017 03.10.2017 31.10.2017 25.12.2017 26.12.2017
=HOLIDAYS(SEQUENZ(;2;2021);"MeVo") ergibt entsprechend die Feiertage 2021-2022 von Mecklenburg-Vorpommern
Code:
=LAMBDA(Jahr;Land;LET(
ArC;LAMBDA(a;b;LET( x;ZEILEN(a);y;SPALTEN(a);z;ZEILEN(b); k;SEQUENZ(x);m;SEQUENZ(x+z);n;SEQUENZ(;y); WENN(m<=x;INDEX(a;k;n);INDEX(b;m-x;n))));
EASTER;LAMBDA(Jahr;LET(
A;GANZZAHL(Jahr/100);
B;REST(19*REST(Jahr;19)+A-GANZZAHL(A/4)-GANZZAHL((A-GANZZAHL((A+8)/25)+1)/3)+15;30);
C;REST(32+2*REST(A;4)+2*GANZZAHL(REST(Jahr;100)/4)-B-REST(REST(Jahr;100);4);7);
D;B+C-7*GANZZAHL((REST(Jahr;19)+11*B+22*C)/451)+22;
E;DATUM(Jahr;WENN(D>31;4;3);WENN(D-31<1;D;D-31));E));
F;WAHL(SEQUENZ(7);-2;0;1;39;49;50;60)+EASTER(Jahr);
G;--(WAHL(SEQUENZ(11);"1.1";"6.1";"8.3";"1.5";"15.8";"20.9";"3.10";"31.10";"1.11";"25.12";"26.12")&"."&Jahr);
H;("25.12."&Jahr)-WOCHENTAG("25.12."&Jahr;2)-32;
I;{"1111111111111111";"1100000000000100";"0010000000000000";"1111111111111111";"1111111111111111";"1111111111111111";"1111111111111111";"1111111111111111";"1111111111111111";"1111111111111111";"1100001001110000";"0100000000010000";"0000000000000001";"1111111111111111";"0001110110001111";"1100000001110000";"0000000000001000";"1111111111111111";"1111111111111111"};
J;--TEIL(I;(3+SUCHEN(Land;"BaWüBayeBerlBranBremHambHessMeVoNiedNoWeRhPfSaarSachSaAnScHoThür"))/4;1);
K;FILTER(MTRANS(ArC(MTRANS(J);MTRANS(SORTIEREN(ArC(ArC(F;G);H)))));J);
L;INDEX(K;SEQUENZ(ZEILEN(K));SEQUENZ(;SPALTEN(K)-1;2));
M;EINDEUTIG(KKLEINSTE(L;SEQUENZ(ZEILEN(L)*SPALTEN(L))));
M))
Anmerkungen:
F: Liste der 7 von Ostern abhängigen FT: Karfr OsSo OsMo Himm PfSo PfMo Fronl
G: Liste der 11 fixen FT: Neuj 3Kö Frau 1Mai Mariä KindT 3Okt RefT AllH W1 W2
H: Ermittlung des Bußtags
I: 18 Binärketten, die die später sortierten FT den 16 Bundesländern zuordnen. Bayern und Thüringen haben dabei nur eine Kennzeichnung, obwohl dort kath. und ev. unterschieden wird.
J: Bildung des Spaltenvektors für das gewählte Bundesland "FT: ja (1) oder nein (0)"
K: Zuerst werden F-H untereinandergeklebt. Dann wird J als Spalte vorangeklebt. Dann wird nach J=1 gefiltert, so dass die unzutreffenden FT rausfallen.
L: J wird wieder entfernt, da die FT im Array nun endgültig bestimmt sind
M: Das Array (bei mehr als einem Jahr) wird zur Spalte umgeordnet, und der seltene Fall "1Mai=Himm" über EINDEUTIG entfernt.
Mit den gängigen Excelfunktionen kann man nun noch z.B. die SaSo-FT wegfiltern, oder den Anfang oder Ende genauer als ganze Jahre eingrenzen.
Beschreibung:
Listet in einer Spalte alle Feiertage eines oder mehrerer Jahre und eines dt. Bundeslandes.
Syntax:
=HOLIDAYS(Jahr;Land)
Beispiel:
=HOLIDAYS(2017;"Brem") ergibt die 12 Feiertage von Bremen 2017
01.01.2017 14.04.2017 16.04.2017 17.04.2017 01.05.2017 25.05.2017
04.06.2017 05.06.2017 03.10.2017 31.10.2017 25.12.2017 26.12.2017
=HOLIDAYS(SEQUENZ(;2;2021);"MeVo") ergibt entsprechend die Feiertage 2021-2022 von Mecklenburg-Vorpommern
Code:
=LAMBDA(Jahr;Land;LET(
ArC;LAMBDA(a;b;LET( x;ZEILEN(a);y;SPALTEN(a);z;ZEILEN(b); k;SEQUENZ(x);m;SEQUENZ(x+z);n;SEQUENZ(;y); WENN(m<=x;INDEX(a;k;n);INDEX(b;m-x;n))));
EASTER;LAMBDA(Jahr;LET(
A;GANZZAHL(Jahr/100);
B;REST(19*REST(Jahr;19)+A-GANZZAHL(A/4)-GANZZAHL((A-GANZZAHL((A+8)/25)+1)/3)+15;30);
C;REST(32+2*REST(A;4)+2*GANZZAHL(REST(Jahr;100)/4)-B-REST(REST(Jahr;100);4);7);
D;B+C-7*GANZZAHL((REST(Jahr;19)+11*B+22*C)/451)+22;
E;DATUM(Jahr;WENN(D>31;4;3);WENN(D-31<1;D;D-31));E));
F;WAHL(SEQUENZ(7);-2;0;1;39;49;50;60)+EASTER(Jahr);
G;--(WAHL(SEQUENZ(11);"1.1";"6.1";"8.3";"1.5";"15.8";"20.9";"3.10";"31.10";"1.11";"25.12";"26.12")&"."&Jahr);
H;("25.12."&Jahr)-WOCHENTAG("25.12."&Jahr;2)-32;
I;{"1111111111111111";"1100000000000100";"0010000000000000";"1111111111111111";"1111111111111111";"1111111111111111";"1111111111111111";"1111111111111111";"1111111111111111";"1111111111111111";"1100001001110000";"0100000000010000";"0000000000000001";"1111111111111111";"0001110110001111";"1100000001110000";"0000000000001000";"1111111111111111";"1111111111111111"};
J;--TEIL(I;(3+SUCHEN(Land;"BaWüBayeBerlBranBremHambHessMeVoNiedNoWeRhPfSaarSachSaAnScHoThür"))/4;1);
K;FILTER(MTRANS(ArC(MTRANS(J);MTRANS(SORTIEREN(ArC(ArC(F;G);H)))));J);
L;INDEX(K;SEQUENZ(ZEILEN(K));SEQUENZ(;SPALTEN(K)-1;2));
M;EINDEUTIG(KKLEINSTE(L;SEQUENZ(ZEILEN(L)*SPALTEN(L))));
M))
Anmerkungen:
- Sonntage sind enthalten, sowohl feste als auch variable. Denn Oster- und Pfingstsonntag ergeben oft Feiertags- statt Sonntagszuschlag, soweit vorhanden.
- Mehrere Jahre müssen als Zeile(nvektor) eingegeben werden, wie im Beispiel "Mevo".
- Die Bundesländer sind mit den ersten 4 Buchstaben einzugeben, Doppelnamen mit deren 2+2. Siehe Code.
- Die Binärketten im Code könnte man um 11 Stück vermindern, da diese bundeseinheitlich 1 sind. Das ginge dann aber zu Lasten der Code-Ordnung.
- Im Code sind zwei eigene LAMBDA-Funktionen enthalten: ArC (ARRAY.COMBINE) in einer schlanken Version und EASTER (von maninweb, nach Gauss).
- Die einzelnen LET-Anweisungen erledigen folgendes:
F: Liste der 7 von Ostern abhängigen FT: Karfr OsSo OsMo Himm PfSo PfMo Fronl
G: Liste der 11 fixen FT: Neuj 3Kö Frau 1Mai Mariä KindT 3Okt RefT AllH W1 W2
H: Ermittlung des Bußtags
I: 18 Binärketten, die die später sortierten FT den 16 Bundesländern zuordnen. Bayern und Thüringen haben dabei nur eine Kennzeichnung, obwohl dort kath. und ev. unterschieden wird.
J: Bildung des Spaltenvektors für das gewählte Bundesland "FT: ja (1) oder nein (0)"
K: Zuerst werden F-H untereinandergeklebt. Dann wird J als Spalte vorangeklebt. Dann wird nach J=1 gefiltert, so dass die unzutreffenden FT rausfallen.
L: J wird wieder entfernt, da die FT im Array nun endgültig bestimmt sind
M: Das Array (bei mehr als einem Jahr) wird zur Spalte umgeordnet, und der seltene Fall "1Mai=Himm" über EINDEUTIG entfernt.
Mit den gängigen Excelfunktionen kann man nun noch z.B. die SaSo-FT wegfiltern, oder den Anfang oder Ende genauer als ganze Jahre eingrenzen.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel).