Letzte Änderung: 01.06.2009

Feiertage einfügen

Um unseren Kalender, dessen Erstellung wir auf den vorangegangenen Seiten erarbeitet haben, mit verschiedenen Terminen auf komfortable Art und Weise zu füllen, legen wir zunächst ein neues Tabellenblatt an. Diesem Blatt habe ich den Namen Termine gegeben. (Kann natürlich auch anders heißen).
Da die unterschiedlichen Terminarten eine unterschiedliche Bearbeitung erfordern, legen wir drei verschiedene Terminblöcke an. Was es damit auf sich hat, dazu kommen wir später. Grundsätzlich ist zu sagen, daß die folgenden Aktionen den Einsatz von VBA erfordern. Wer sich damit noch nicht beschäftigt hat, findet in der Abteilung Excel-Makros einige Grundlagen. Ich werde aber versuchen, das Erforderliche auch hier zu erklären.

Bewegliche Feiertage (Osterformel)

Ein besonderes "Problem" stellen bewegliche Feiertage dar. Glücklicherweise hat der Mathematiker Gauss eine Formel entwickelt, mit der man diese Tage errechen kann. Auf der Basis dieser Formel gibt es einige Umsetzungen für den PC, eine davon habe ich auch verwendet.(Genau genommen wird damit der Ostersonntag berechnet, die anderen Feiertage haben einen festgelegten Abstand zum Ostersonntag).
Das ist die Formel:
Function bewFeiert(Jahr As Integer) As Date
'berechnet das Osterdatum (Sonntag)
Dim D As Integer
D = (((255 - 11 * (Jahr Mod 19)) - 21) Mod 30) + 21
bewFeiert = DateSerial(Jahr, 3, 1) + D + (D > 48) + 6 - ((Jahr + Jahr \ 4 + D + (D > 48) + 1) Mod 7)
 
End Function
Sie wird im Visual Basic-Editor eingefügt. Anschließend können wir die Funktion mit dem Funktions-Assistent unter Benutzerdefiniert aufrufen. Dazu selektieren wir auf dem Tabellenblatt Termine die Zelle A3 und klicken auf diesen Schalter:
Im Funktions-Assistent wählen wir die Funktion bewFeiert aus. Es öffnet sich ein neues Fenster:
Nun klicken wir im Tabellenblattregister auf den Reiter Kalender, es öffnet sich das Kalenderlatt. Dort selektieren wir die Zelle A1 und drücken Enter. Nun ist die Funktion bewFeiert mit dieser Zelle verknüpft. Wir haben eine 3D-Formel erzeugt.
Im Bild oben sehen wir das Ergebnis. Rechts oben die Formel der Funktion mit ihren Parametern. Das Datum ist der Termin vom Ostersonntag. Diese Formel muß für die anderen beweglichen Feiertage modifiziert werden. Wie sehen wir in der folgenden Tabelle:
Feiertag Differenz zu Ostern Formel
Rosenmontag - 48 =bewFeiert(Kalender!A1)-48
Fastnacht - 47 =bewFeiert(Kalender!A1)-47
Aschermittwoch - 46 =bewFeiert(Kalender!A1)-46
Karfreitag - 2 =bewFeiert(Kalender!A1)-2
Ostersonntag   =bewFeiert(Kalender!A1)
Ostermontag + 1 =bewFeiert(Kalender!A1)+1
Himmelfahrt + 39 =bewFeiert(Kalender!A1)+39
Pfingstsonntag + 49 =bewFeiert(Kalender!A1)+49
Pfingstmontag + 50 =bewFeiert(Kalender!A1)+50
Fronleichnam + 60 =bewFeiert(Kalender!A1)+60
Nachdem alle Formeln und Feiertage eingetragen sind, sollte das Ergebnis so aussehen:
Termine

 AB
1Feiertage
2DatumFeiertag
323.02.2009Rosenmontag
424.02.2009Fastnacht
525.02.2009Aschermittwoch
610.04.2009Karfreitag
712.04.2009Ostersonntag
813.04.2009Ostermontag
921.05.2009Himmelfahrt
1031.05.2009Pfingstsonntag
1101.06.2009Pfingstmontag
1211.06.2009Fronleichnam
1301.01.2009Neujahr
1401.05.2009Tag der Arbeit
1503.10.2009Tag der dt. Einheit
1624.12.2009Heiliger Abend
1725.12.20091. Feiertag
1826.12.20092. Feiertag
1931.12.2009Silvester

Formeln der Tabelle
ZelleFormel
A3=bewFeiert(Kalender!$A$1)-48
A4=bewFeiert(Kalender!$A$1)-47
A5=bewFeiert(Kalender!$A$1)-46
A6=bewFeiert(Kalender!$A$1)-2
A7=bewFeiert(Kalender!$A$1)
A8=bewFeiert(Kalender!$A$1)+1
A9=bewFeiert(Kalender!$A$1)+39
A10=bewFeiert(Kalender!$A$1)+49
A11=bewFeiert(Kalender!$A$1)+50
A12=bewFeiert(Kalender!$A$1)+60
A13=DATWERT("01.01."&Kalender!A1)
A14=DATWERT("01.05."&Kalender!A1)
A15=WENN(Kalender!A1<1954;"";WENN(Kalender!A1<1990;DATWERT("17.06."&Kalender!A1);DATWERT("03.10."&Kalender!A1)))
A16=DATWERT("24.12."&Kalender!A1)
A17=DATWERT("25.12."&Kalender!A1)
A18=DATWERT("26.12."&Kalender!A1)
A19=DATWERT("31.12."&Kalender!A1)
In der unteren Darstellung sind die verwendeten Formeln erkennbar. Bitte auch die spezielle Formel für den Tag der deutschen Einheit beachten.
Grundsätzlich ist anzumerken, daß die Reihenfolge der Termine für das weitere Vorgehen keine Rolle spielt. Ich habe das nur zur besseren Übersicht in die kalendarische Reihenfolge gebracht. Die Termine passen sich nun automatisch an die Jahreszahl auf dem Kalenderblatt an.
Die Berechnung der beweglichen Feiertage in der Vorweihnachtszeit beschreibe ich auf einer gesonderten Seite.