Datum/Zeit im Zeitraum?

Liegt ein Datum oder eine Zeit in einem definiertem Zeitraum?

Nicht sel­ten stellt sich die Frage, ob ein bes­timmtes Datum oder eine gegebene Uhrzeit in einem zu ver­gle­ichen­den Zeitrah­men liegt. Die Frage kann laut­en, ob der 25.12. ein Feiertag ist (ja klar 😉 ) oder ob am 11.August des aktuellen Jahres Betrieb­s­fe­rien sind. Auch für Zei­tangaben kann solch ein Ergeb­nis gefordert wer­den, beispiel­sweise in welche Schicht ein Vor­fall um 17:15 Uhr fällt.

Um mit eini­gen kleinen Beispie­len arbeit­en zu kön­nen, haben wir Ihnen eine Mus­ter­datei erstellt. Anhand dieses Tabel­len­blatts zeigen wir Ihnen auf, wie Sie ziel­gerichtet eine Antwort auf die Frage bekom­men, ob dieser bes­timmte Ter­min in einem definierten Zeitraum (Datum oder Uhrzeit) liegt.

▲ nach oben …

Datum

Gegeben sei irgend ein berech­netes oder von Hand eingegebenes (kalen­darisches) Datum. Es gibt ver­schiedene Kri­te­rien, auf welche dieser Tag über­prüft wer­den kann. Wir ver­suchen, hier möglichst viele Fragestel­lun­gen einzu­binden … Wir ver­wen­den prinzip­iell die Zel­ladresse A1, wo das abzufra­gende Datum oder die Uhrzeit drin­nen ste­ht. 

Ist Datum ein Wochenende (Samstag oder Sonntag)?

Das lässt sich recht ein­fach mit ein­er Funk­tion beant­worten:
=WOCHENTAG(A1; 21)>5
gibt das Ergeb­nis WAHR oder FALSCH zurück. Beispiel für eine Funk­tion mit ein­er „vernün­fti­gen” Tex­taus­gabe:

="Der " & TEXT(A1; "T. MMMM JJJJ") & " ist " & WENN(WOCHENTAG(A1; 2)<6; "kein"; "ein") & " Wochenende."

Beacht­en Sie bitte hier und auch den weit­eren Formeln, dass diese in 1 Zeile der Bear­beitungsleiste gehören. Die Darstel­lung hier im Blog ist mitunter mehrzeilig. 

▲ nach oben …

Ist Datum ein Feiertag?

Excel „weiß” natür­lich nicht, ob ein eingegebenes Datum ein Feiertag ist oder oder nicht. Woher auch schon in der EU sind diverse Tage in einem Staat Feiertage und im anderen nicht. Selb­st in Deutsch­land ist es nicht immer ein­heitlich. Ver­suchen Sie ein­mal am Rosen­mon­tag in Köln eine geöffnete Bank zu find­en, das wird gewiss schwierig. Darum haben wir in der Muster-Mappe einen Bere­ich geschaf­fen, wo alle Feiertage des aktuellen und des Fol­ge­jahres ver­merkt sind. Sie wer­den natür­lich den einen oder anderen Tag löschen oder lokale Feiertage hinzufü­gen. In diesen Fällen acht­en Sie bitte darauf, dass Sie erforder­lichen­falls den Bere­ich­sna­men anpassen. Sie wer­den gle­ich sehen, dass das arbeit­en mit Bere­ich­sna­men viel angenehmer ist und dadurch eine Formel wesentlich trans­par­enter wird. Zuerst die WAHR/FALSCH – For­mulierung:
=NICHT(ISTFEHLER(SVERWEIS(A1; Feiertage; 1; FALSCH)))

Wenn die Grun­dregel für den SVERWEIS(), dass die Such­w­erte auf­steigend sortiert sein müssen beachtet wurde (wichtig bei Änderun­gen), dann ist das Ergeb­nis auch richtig. Und der Voll­ständigkeit hal­ber noch eine Formel, wie sie dur­chaus vorkom­men kön­nte:

="Der " & TEXT(A1; "TT.MM.JJJJ") & " ist "& WENN(ISTFEHLER(SVERWEIS(A1; Feiertage; 1; FALSCH)); "k"; "") & "ein Feiertag."

 Zwei kleine Hin­weise zu der Formel: Wenn Datum nicht im Namens­bere­ich Feiertage gefun­den wird, dann gibt die Funk­tion einen Fehler­w­ert zurück. Und dieser wird mit ISTFEHLER() abge­fragt. In der Excel-Ver­sio­nen ab 2007 gibt es eine etwas ein­fachere Funk­tion: WENNFEHLER(); diese ist hier aber nicht wirk­lich hil­fre­ich. 

▲ nach oben …

Ist Datum ein Arbeitstag?

Was auf den ersten Blick ganz ein­fach zu beant­worten scheint, ent­pup­PT sich rasch als etwas kom­plex­er. Mon­tag bis Fre­itag sind Arbeit­stage, klar. Außer wenn der Tag ger­ade ein Feiertag ist. OK, stimmt auch. Und natür­lich auch auch dann nicht, wenn da ger­ade Betrieb­s­fe­rien sind. Sie sehen, der erste Anschein täuscht mitunter.

OK, die Sache mit dem Wochen­tag ist ganz leicht: 
=WOCHENTAG(A1; 2)<6
gibt das logis­che Ergeb­nis zurück. Auch den Feiertag haben wie ger­ade vorher abgecheckt. Um das Ganze Schritt für Schritt zu erar­beit­en, belassen wir es erst ein­mal bei dieser Kon­stel­la­tion und „behaupten”, dass es keine Werks­fe­rien gibt. Dann müsste die Funk­tion im Umgangs­deutsch so ausse­hen: „Wenn Datum im Bere­ich Mon­tag .. Fre­itag liegt und auch kein Feiertag ist, dann haben wir einen Arbeit­stag, son­st nicht”.

Bei solch ver­schachtel­ten Bedin­gun­gen empfehlen wir stets, erst ein­mal jede einzelne Bedin­gung in ein­er getren­nten Zelle auszuw­erten und dann in ein­er weit­eren Zelle die Gesam­tauswer­tung zu for­mulieren. Beispiel: in F1 ste­ht die Formel zur Berech­nung des Wochen­t­ages: =WOCHENTAG(A1; 2)<6. Das Ergeb­nis ist ein Bool’scher Wert. In F2 kommt die Funk­tion in Sachen Feiertag:
=ISTFEHLER(SVERWEIS(A1; Feiertage; 1; FALSCH))
Auch hier wird ein Wahrheitswert zurück gegeben. Und in F3 schreiben Sie nun diese Formel: =UND(F1;F2). Naturgemäß ist das Ergeb­nis auch ein WAHR oder FALSCH, welch­es aus­sagt, ob es sich bei dem Datum in A1 um einen Arbeit­stag han­delt oder nicht. Und in F4 noch ein­mal als „sprechen­des” Ergeb­nis:
="Der " & TEXT(A1; "TT.MM.JJJJ") &  " ist " & WENN(UND(F1; F2); "ein"; "kein") & " Arbeitstag."

Nun ist das Mit den Hil­fs-Zellen nicht immer der Hit.Und natür­lich lassen sich die bei­den Formeln so zusam­men­fassen, dass eine einzige, wenn auch kom­plexere (sprich: län­gere) Formel in der Eingabezeile ste­ht und in der entsprechen­den Zelle das Ergeb­nis aus­gibt:

=WENN(UND(WOCHENTAG(A1; 2)<6; ISTFEHLER(SVERWEIS(A1; Feiertage; 1; FALSCH))); ""; "Kein ") & "Arbeitstag"

Sin­nvoller­weise wird im End­ef­fekt auf einen Arbeit­stag geprüft, weil ja ver­schiedene Para­me­ter wahr oder falsch sein kön­nen. Pro­bieren Sie es aus, es haut hin. 🙂

 Bleibt als drittes Prüfele­ment noch der Werk­surlaub, die Betrieb­s­fe­rien. Hier muss geprüft wer­den, ob Datum inner­halb eines Zeitraums liegt oder nicht. Zugegeben, das geht mit der klas­sis­chen Meth­ode auch ganz gut und über­sichtlich: Sie prüfen, ob Datum >= erster Tag des Urlaubs und <= let­zter Feri­en­tag ist. Wenn ja, dann ist an dem Tag das Werk geschlossen. Es geht aber auch um einiges ele­gan­ter. 

 Zur Vor­bere­itung haben wir für das aktuelle und das Fol­ge­jahr jew­eils vier Urlaub­swochen Werks­fe­rien einge­tra­gen. Und bei­de Jahre haben auch einen Bere­ich­sna­men ver­liehen bekom­men: BFJahr1 und BFJahr2. Dass „BF für Betrieb­s­fe­rien ste­ht haben Sie vielle­icht schon erkan­nt. Die wirk­lich grandiose Formel, welche wir dort in Spalte A einge­set­zt haben, ist von Franz Pölt / Exelformeln.de. Damit wird immer der Mon­tag ein­er definierten Kalen­der­woche eines bes­timmten Jahres berech­net.

Wiederum mit einem Wahrheitswert als Rück­gabe soll­ten Sie für das laufende Jahr fol­gende, ganz kurz gehal­tene Formel ver­wen­den: =MEDIAN(BFJahr1;A1)=A1. Ers­paren Sie uns die detail­lierte Erk­lärung, die Excel-Hil­fe (F1) sowie das Inter­net kön­nen hier hil­fre­ich sein.

Meist wird die Abfrage auf 1 Jahr reichen. Wollen Sie jedoch Datum für das aktuelle und das Fol­ge­jahr mit den Betrieb­s­fe­rien ver­gle­ichen, dann kön­nte die Formel so laut­en:
=ODER(MEDIAN(BFJahr1; A1)=A1; MEDIAN(BFJahr2; A1)=A1)

Die ODER()-For­mulierung für alle drei Bedin­gun­gen soll­ten Sie nun in Eigenini­tia­tive fer­tig bekom­men. Sie ist ein­fach nur eine Erweiterung der Zweierkom­bi­na­tion, welche Sie bere­its ken­nen. Im Einzelfall wer­den wir auch bere­it sein, Ihnen zu helfen.

▲ nach oben …

Zeit

Angenom­men, ein Fehler­pro­tokoll soll aus­gew­ertet wer­den. Es wird zu jedem Vor­fall die Uhrzeit aus­gegeben. In der Über­sicht soll nun aus­gegeben wer­den, ob es nun die Früh- die Spät- oder die Nachtschicht gewe­sen ist. – Das geht natür­lich auch über die altherge­brachte Methodik mit ein­er extrem lan­gen WENN() und ODER()-Kom­bi­na­tion. Aber was ger­ade eben bei den kalen­darischen Dat­en geklappt hat, das geht genau so gut mit Zeit­en. Die MEDIAN()-Funk­tion greift auch hier. Und noch eines: In A1 ste­ht nun kein Datum son­dern die zu ver­gle­ichende Zeit.

Natür­lich ist auch jede der Schicht­en mit einem Bere­ich­sna­men verse­hen. Dabei ist „einem” nicht so ganz kor­rekt. Die Nachtschicht geht ja über Mit­ter­nacht hin­aus. Für und Men­schen ist zwar klar, dass ein Zeitraum von beispiel­sweise 23:00 Uhr bis 02:00 Uhr drei Stun­den sind, aber Excel kann das nicht so ohne weit­eres erken­nen. darum ist die Nachtschicht hier auch in zwei Parts unterteilt und hat entsprechend auch zwei Bere­ich­sna­men. Bei der Gele­gen­heit: Schauen Sie sich gerne ein­mal die Formeln an. Sie sind nicht über­wälti­gend aber ganz prag­ma­tisch. – Um auf die Früh­schicht zu prüfen, geben Sie diese Formel ein:
=MEDIAN(Frühschicht;A1)=A1

Die Logik ist die gle­iche, wie beim Betrieb­surlaub. Nur dass hier die bei­den Eck­w­erte untere­inan­der ange­ord­net sind. Und das Ergeb­nis stimmt auch sekun­den­ge­nau. Apro­pos Sekun­den: Sie kön­nen die For­matierung der Zeit­en gerne dahinge­hend ändern, dass nur hh:mm angezeigt wer­den; aber nur die For­matierung, die Inhalte der Zellen müssen (natür­lich) erhal­ten bleiben.

 Für die Spätschicht gilt das eben gesagte zu prak­tisch 100%; die einzige Aus­nahme ist naturgemäß, dass die Spätschicht abge­fragt wird. Und auch die Nachtschicht wird so ver­glichen. Nur dass es hier zwei Zeitrah­men gibt, einen bis und einen ab Mit­ter­nacht. Nun gilt es nur noch, das Ganze in eine WENN()-Funk­tion zu pack­en:

=WENN(MEDIAN(Frühschicht; A1)=A1; "Frühschicht"; WENN(MEDIAN(Spätschicht; A1)=A1; "Spätschicht"; "Nachtschicht"))

Gewiss wird Ihnen aufge­fall­en sein, dass gar nicht expliz­it auf „Nachtschicht” abge­fragt wor­den ist und somit der zweite Block in der Nachtschicht eigentlich nicht erforder­lich ist. Unser Kom­men­tar dazu: „Jein” ;-). In diesem Fall hät­ten wir die Zeit­en für die Nachtschicht gar nicht angeben müssen. Aber nehmen Sie doch ein­fach ein­mal an, dass nur geprüft wer­den soll, ob eine gegebene Zeit in die Nachtschicht fällt oder nicht. Als Beispiel sei die Zeit 6:45 (wiederum in A1).  Dann wäre die Abfrage auf <7:00 kor­rekt und zielführend. Als näch­stes ste­ht dort aber 23:44 als Uhrzeit drin. Und das ist keineswegs klein­er als 7:00 Uhr. Darum bietet sich hier fol­gende Formel an: 
=ODER(MEDIAN(Nacht1;A1)=A1;MEDIAN(Nacht2;A1)=A1)
wom­it ganz ein­deutig die Nachtschicht iden­ti­fiziert wird.

[NachOben­Let­zte Verweis=„ML: Inner­halb Zeitraum?”]

 

Dieser Beitrag wurde unter Datum und Zeit, Musterlösungen, Ohne Makro/VBA, Suchen und finden abgelegt und mit , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.