In diesem Beitrag geht es um den Vergleich von Zeitabschnitten. Oder genauer gesagt darum, den Bereich der Überschneidung von zwei Zeitabschnitten zu bestimmen. Wo braucht man denn sowas?
Beispielsweise dann, wenn man im arbeitsrichterlichen Dezernat divergierenden Parteivortrag zu Arbeitszeiten auf der Maß der Übereinstimmung hin untersuchen will: Welche Zeitabschnitte sind streitig bzw. unstreitig? Wer will da schon, vielleicht über Monate oder gar Jahre hinweg, Position für Position durchgehen und die streitigen Zeitabschnitte von den unstreitigen auseinanderlesen?
Oder kurz mal klären, inwieweit Arbeitszeiten in einer tabellarischen Aufstellung in die Nachtzeit fallen und daher Nachtarbeitszuschläge auslösen.
Oder bei der Entschädigung von Zeugen oder ehrenamtlichen Richtern für Verdienstausfall nach den Bestimmungen des JVEG die Überschneidung des Zeitraums ihrer Heranziehung mit ihrer individuellen Arbeitszeit bestimmen.
Oder die Zuordnung von Fehlzeiten zu Kalenderwochen oder Quartalen vornehmen.
Zeitüberschneidung mit Excel berechnen
Excel stellt für die Berechnung von Zeitüberschneidungen keine eigene Funktion zur Verfügung, so dass eine benutzerdefinierte Funktion entwickelt werden muss, mit der die Berechnung vorgenommen werden kann.
Dabei muss man sich zunächst klar machen, dass jeder der in die Berechnung einbezogenen Zeitabschnitte selbst durch zwei Zeitangaben (Beginn und Ende) definiert ist. Dasselbe gilt natürlich auch für das Berechnungsergebnis. Der Funktion müssen daher vier Parameter übergeben werden: Beginn und Ende des ersten Zeitabschnitts sowie Beginn und Ende des zweiten Zeitabschnitts.
Als Berechnungsergebnis soll die Funktion auch wieder ein Wertepaar liefern, nämlich Beginn und Ende des Überschneidungszeitraums. Funktionen liefern allerdings immer nur einen Rückgabewert, so dass die Berechnung von Beginn und Ende in zwei Durchgängen erfolgen und der Funktion auch noch jeweils über einen weiteren Parameter mitgeteilt muss, ob gerade Beginn oder Ende berechnet werden soll.
Aber damit noch nicht genug! Was soll eigentlich passieren, wenn sich die beiden Zeitabschnitte gar nicht decken? Auch für diesen Fall muss ein Rückgabewert für Beginn und Ende vorgesehen werden.
Implementierung der Funktion
Zur Programmierung einer benutzerdefinierten Funktion muss in der Registerkarte „Entwicklertools“ in der Gruppe „Code“ über die Schaltfläche „Visual Basic“ der VBA-Editor geöffnet, ein Modul angelegt und das Code-Fenster geöffnet werden. Wie das alles funktioniert, habe ich in dem Beitrag „Excel berechnet Wertgebühren nach RVG“ schon einmal beschrieben. Dort kann man auch nachlesen, was zu tun ist, damit der Code beim Speichern der Arbeitsmappe erhalten bleibt.
Den Code der benutzerdefinierten Funktion findet man hier. Die Funktion hat den Namen „ZeitDeckung()“ und greift selbst auf die weiteren Funktionen „maxof2()“ und „minof2()“ zurück. Der Funktion „ZeitDeckung()“ werden insgesamt fünf Parameter übergeben. Vier davon (Parameter 2 bis 5) entfallen auf die Begrenzungswerte der beiden Zeitabschnitte. Im Parameter 1 können nur die Werte „u“ und „o“ übergeben werden. Durch sie wird bestimmt, ob die Untergrenze der Zeitüberschneidung zurückgegeben wird oder die Obergrenze. Überschneiden sich die beiden Zeiträume nicht, wird als Unter- und Obergrenze jeweils der Wert 0 zurückgegeben.
Anwendung der Funktion
Wie man die benutzerdefinierte Funktion einsetzt, zeigt der nachfolgende Screenshot.
