Erster/Letzter Arbeitstag

Ersten/Letzten Arbeitstag im Monat berechnen

Der erste bzw. let­zte Arbeit­stag muss ja nicht unbe­d­ingt mit dem Monat­ser­sten bzw. dem Ulti­mo zusam­men fall­en. Parade­beispiel ist gewiss der 1. Mai, der bei uns in Deutsch­land immer ein Feiertag ist. Und es ist gar nicht ein­mal so sel­ten, dass ein Woch­enende auf den ersten oder let­zten Tag des Monats fällt. Daher muss ein Weg gefun­den wer­den, diesen Tag für jeden beliebi­gen Monat zu berech­nen.

Was Sie brauchen

Wegen der eben schon ange­sproch­enen Feiertage brauchen Sie in irgen­dein­er Form eine Über­sicht, eine Liste der Feiertage des entsprechen­den Jahres. Und damit Sie die hier aufge­führten Beispiele bess­er nachvol­lziehen kön­nen, stellen wir Ihnen in dieser Mappe im Arbeits­blatt Feiertage_1 eine solche Liste zur Ver­fü­gung.

Es han­delt sich in dieser Auf­stel­lung um eine Intel­li­gente Tabelle bzw. Liste. Das hat ver­schiedene Vorteile. Ins­beson­dere, dass Sie ein­fach regionale Feiertage, Brück­en­t­age oder Feri­en­t­age anfü­gen kön­nen. Eine kalen­darische Ord­nung braucht dabei nicht beachtet zu wer­den. – Diese Tabelle den Bere­ich­sna­men: tbl_Feiertage. Der wird bei ein­er Verän­derung der Zeilen­zahl automa­tisch angepasst, was recht prak­tisch ist.

Falls Ihre Excel-Ver­sion keine Lis­ten unter­stützt, dann passen Sie die Dat­en nach Ihren Wün­schen an und ändern dann auch die Eck­dat­en des Bere­ich­sna­mens, damit alles kor­rekt ist. In dem Fall  sollte zweck­mäßiger­weise nur der Bere­ich mit den kalen­darischen Dat­en den Namen erhal­ten.

▲ nach oben …

Basics

Für alle Excel-Versionen, ohne VBA

Auf der Basis eines beliebi­gen Datums soll der erste Arbeit­stag berech­net wer­den. Dazu brauchen Sie zwei Excel-Funk­tio­nen und eine Liste der Feiertage. Im Arbeits­blatt Feiertage_1 der Muster-Mappe sind die Feiertage des jew­eils aktuellen Jahres ver­merkt, das Jahr kann jedoch per Hand (durch erset­zen der Formel) angepasst wer­den. Diese Tabelle umfasst die Feiertage exakt eines Jahres. Sie kann beliebig ergänzt oder verän­dert wer­den, es muss keine kalen­darische Rei­hen­folge einge­hal­ten wer­den. – Wird zur Berech­nung ein Datum aus einem Jahr ver­wen­det, welch­es nicht in Zelle A1 ste­ht, dann ist eine falsche Berech­nung des ersten bzw. let­zten Arbeit­stages möglich. Darum wird diese Liste vorzugsweise für Dat­en des aktuellen Jahres ver­wen­det.

Im Arbeits­blatt Feiertage_2 sind alle Feiertage des Jahres 2000 bis 2014 aufge­führt. Auch dieses ist eine Intel­li­gente Tabelle, allerd­ings umfasst die eigentliche Liste auss­chließlich die Feiertags-Dat­en, nicht jedoch die Spalte 1 mit den Namen der Feiertage. Zur Tren­nung dient hier Spalte B, diese ist allerd­ings aus­ge­blendet. Der Liste, den Dat­en also, wurde der Bere­ich­sname Feiertage2 vergeben. Auch hier gilt die Ein­schränkung, dass das entsprechende Jahr in der Tabelle aufge­führt sein muss, son­st kann es auch hier zu Fehlern kom­men. – Wollen Sie nur für ein einzelnes oder wenige Jahre in die Zeit vor dem ersten Jahr die Feiertage berech­nen, dann kön­nen Sie die Spal­ten vor Spalte C ein­fü­gen, den Dat­en-Bere­ich  der ehe­ma­li­gen Spalte C ab Zeile 1 markieren und anschließend das Aus­fül­lkästchen bis zur Spalte C ziehen. Die Dat­en wer­den automa­tisch berech­net. Gle­ich­es gilt, wenn Sie die Dat­en über 2014 hin­weg nach rechts auf­füllen wollen:

Weitere Jahre hinzufügen

Weit­ere Jahre hinzufü­gen

Weit­er­hin gibt es zwei UDFs, zwei selb­st erstellte Funk­tio­nen. Den Quell­code find­en Sie im Modul1 inner­halb des VBA-Edi­tors. Da hier das Datum direkt an die Funk­tion übergeben wird, bedarf es keines Bere­ichs mit aufge­lis­teten Feierta­gen. Diese wer­den in dem Mod­ul durch weit­ere Funk­tio­nen berech­net. Dadurch sind Fehlergeb­nisse aus­geschlossen.

Im ersten Blatt (Tabelle1) ste­ht in A1 ein beliebiges Datum des Monats, von dem der erste bzw. let­zte Arbeit­stag berech­net wer­den soll. Weit­er­hin find­en Sie hier alle Beispiele zur unter­schiedlichen Berech­nung.

▲ nach oben …

Erster Arbeitstag

Es sei noch ein­mal erwäh­nt, dass der erste Arbeit­stag des Monats nicht immer der Monat­ser­ste ist. Darum zeigen wir Ihnen hier ja auch ver­schiedene Wege auf, den ersten Werk­tag des Monats aus der Zelle A1 zu berech­nen.

Nur das aktuelle oder ein definiertes Jahr

Die erste Berech­nung find­en Sie in A4. Die Formel ist auf den ersten Blick nicht wirk­lich kurz, aber sie umfasst bekan­nte Ele­mente:
=ARBEITSTAG(DATUM(JAHR($A$1); MONAT($A$1); 0); 1; Tabelle1[Datum])

Die Funk­tion ARBEITSTAG() gibt es schon seit Excel 2007, sie ist also schon seit eini­gen Jahren ver­füg­bar. Prinzip­iell wird das Datum zurück gegeben, welch­es eine definierte Zahl von Tagen nach dem Aus­gangs­da­tum liegt. Dabei wer­den nur Arbeit­stage berech­net und option­al auch benan­nte Feiertage. Mehr dazu find­en Sie hier im Blog oder natür­lich auch im Inter­net.

Als Aus­gangs­da­tum wird per DATUM()-Funk­tion der Monat­slet­zte des Vor­monats berech­net, anschließend inner­halb der ARBEITSTAG-Funk­tion 1 Tag dazu gerech­net. Damit wird indi­rekt der Erste des betrof­fe­nen Monats definiert. Pro­bieren Sie gerne ein­mal aus, direkt den Ersten als Argu­ment der DATUM-Funk­tion zu ver­wen­den und 0 Tage dazu zu rech­nen. Es geht daneben (mit Sicher­heit im Jan­u­ar 2016 gut zu erken­nen). Schlussendlich wird als let­ztes Argu­ment der Bere­ich vergeben, wo in der Liste mit dem Bere­ich­sna­men Tabelle1, Spalte [Datum] alle Feiertage aufge­lis­tet sind.

Die Rück­gabe der Formel ist eine serielle Zahl. Die jew­eilige Zelle sollte entsprechend als Datum im beliebi­gen For­mat dargestellt wer­den.

Speziell für das aktuelle Jahr sind in der Muster-Tabelle in Spalte E zwei alter­na­tive Formeln dargestellt. Die Sys­tem­atik ist die gle­iche, nur die Adressierung der Feiertage ist eine andere. Bei Größen­verän­derung der Liste ist eine Anpas­sung erforder­lich.

Beliebiges Jahr eines definierten Bereichs

Im Arbeits­blatt Feiertage_2 sind alle Feiertage der Jahre 2000 bis 2014 in den einzel­nen Zellen berech­net. Diese Liste/Intelligente Tabelle kann als Grund­lage für die Berech­nung eines Datums aus dem Zeitraum dienen. Weit­er oben wurde ja schon beschrieben, wie Sie den Bere­ich der Jahre nach unten bzw. oben anpassen kön­nen.

Die ver­wen­dete Formel ist im Prinzip gle­ich aufge­baut wie die direkt hierüber beschriebene Formel. Der haupt­säch­liche Unter­schied ist, dass ein klar definiert­er Bere­ich­sname, hier: Feiertage2 ver­wen­det wird. Auch hier gilt, dass der Bere­ich­sname automa­tisch angepasst wird, wenn die Dat­en als Tabelle/Intelligente Liste verän­dert wer­den. Sollte eine Liste nicht möglich sein, dann muss der Bere­ich­sname per Hand angepasst wer­den, wenn die die Koor­di­nat­en der Dat­en ändern. Die Formel find­en Sie in der Mustermappe, Blatt Tabelle1, Zelle A8:A9.

▲ nach oben …

Beliebiges Jahr berechnen

Es ist zwar möglich, für jedes Jahr und jeden auszuw­er­tenden Tag einzeln per Formel zu berech­nen, aber das wäre eine der­ar­tig unüber­sichtliche und fehler­an­fäl­lige Formel, dass wir hier gar nicht erst den Ver­such unternehmen, das in dieser Form zu real­isieren. Wir ziehen in solchen Fällen eine Makro-Lösung vor, eine benutzerdefinierte Funk­tion (UDF). Genauer gesagt sind es zwei UDFs, für den ersten Arbeit­stag: Erster­Ar­beit­sTag() und den let­zten Werk­tag des entsprechen­den Monats: Let­zter­Ar­beit­sTag(). Sie rufen diese Funk­tion auf und schreiben das Argu­ment, ein beliebiges Datum des zu berech­nen­den Monats, in die Klam­mern. Die Funk­tion wird dann den entsprechen­den Tag berech­nen.

In der Muster-Mappe ist der Code für die Berech­nung bere­its einge­bun­den. Der Große Vorteil der UDF: Sie kann in prak­tisch allen, auch frühen Excel-Ver­sio­nen ver­wen­det wer­den. Die Ver­sion muss nur VBA unter­stützen. Auch hier find­en Sie ein Berech­nungs-Beispiel in unser­er Mappe.

Einige Worte zum Code: Der 3.10. ist als Feiertag fest ver­ankert, falls Sie die Funk­tion für sehr frühe kalen­darische Dat­en (vor 1990) ver­wen­den, dann müssen Sie den Code entsprechend anpassen. – Der Code muss entwed­er in jede Mappe einge­bun­den wer­den, wo die Funk­tion ver­wen­det wird oder Sie erstellen aus den UDFs ein Add-In, welch­es Sie dann aktivieren müssen. Für das ein­binden des Codes kön­nen Sie beispiel­sweise hier im Blog einiges nach­le­sen.

▲ nach oben …

Letzter Arbeitstag

Prinzip­iell gilt äquiv­a­lent alles, was oben gesagt wor­den ist. Nur dass der let­zte Arbeit­stag des entsprechen­den Monats berech­net wird. Die reine Excel-Formel allerd­ings ist etwas anders als zur Berech­nung des ersten Arbeit­stages:
=ARBEITSTAG(DATUM(JAHR($A$1); MONAT($A$1)+1; 1); -1; Tabelle1[Datum])

Hier gilt gle­icher­maßen, dass diese Form für die Ver­wen­dung ein­er Intel­li­gen­ten Tabelle in den bei­den Arbeits­blät­tern mit den Feierta­gen gilt. Eventuell muss der Bere­ich (let­ztes Argu­ment der Formel) als direk­te Bere­ich­sangabe in A1-Form angepasst wer­den. – Bei Ver­wen­dung der UDF brauchen Sie außer den oben genan­nten Bedin­gun­gen nichts zu beacht­en.

▲ nach oben …

Rück­mel­dun­gen / Feed­back gerne per Mail an mich (G.Mumme@Excel-ist-sexy.de)

Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?

Dann würde ich mich über einen Beitrag Ihrer­seits z.B. 1,00  freuen … (← Klick mich!)

Dieser Beitrag wurde unter Excel-Funktionen, Mit VBA/Makro, Ohne Makro/VBA, Wege nach Rom abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.