Trotz vieler inzwischen auch frei verfügbaren Kalender-Applikationen ist man oft darauf angewiesen, eigene Tabellen aufzubauen, die es erlauben, mit variablen Kalenderdaten zu arbeiten.
Inhaltsverzeichnis
1. Feiertage ermitteln
Aus dem aktuellen Jahr und dem Ostersonntag, für den Calc eine Funktion zur Verfügung stellt, lassen sich alle weiteren Feiertage ermitteln. Im Beispiel erhalten die Zellen B2 und B3 einen Namen, der in den weiteren Formeln anstelle der Zelladresse verwendet wird.
Inhaltsverzeichnis
1.1. Formeln für die wichtigsten Feiertage
|
A |
B |
C |
|
|
1 |
Feiertag |
Formel |
Zellname |
|
2 |
Aktuelles Jahr |
2005 |
AktuellesJahr |
|
3 |
Ostersonntag |
=OSTERSONNTAG(AktuellesJahr) |
Ostern |
|
4 |
|||
|
5 |
Neujahr |
=DATUM(AktuellesJahr;1;1) |
|
|
6 |
Karfreitag |
=Ostern-2 |
|
|
7 |
Ostersonntag |
=Ostern |
|
|
8 |
Ostermontag |
=Ostern+1 |
|
|
9 |
Tag der Arbeit |
=DATUM(AktuellesJahr;5;1) |
|
|
10 |
Christi Himmelfahrt |
=Ostern+39 |
|
|
11 |
Pfingstmontag |
=Ostern+50 |
|
|
12 |
Fronleichnam |
=Ostern+60 |
|
|
13 |
Mariä Himmelfahrt |
=DATUM(AktuellesJahr;8;15) |
|
|
14 |
Tag der deutschen Einheit |
=DATUM(AktuellesJahr;10;3) |
|
|
15 |
Allerheiligen |
=DATUM(AktuellesJahr;11;1) |
|
|
16 |
Weihnachten (1. Weihnachtsfeiertag) |
=DATUM(AktuellesJahr;12;25) |
|
|
17 |
Stephanstag (2. Weihnachtsfeiertag) |
=DATUM(AktuellesJahr;12;26) |
|
1.2. Der vierte Advent und der davon abgeleitete Buß- und Bettag
Bei der Berechnung des vierten Advents (diesen benötigt man auch für die Errechnung des Buß- und Bettages) haben wir das Problem, dass dieser nicht auf ein fixes Datum fällt, sondern per Definition auf den letzten Sonntag vor dem 25. Dezember, d.h. Jedes Jahr ein anderes Datum hat.
Was wissen wir von diesem Datum?
Fällt der 25. Dezember auf einen Montag, dann führt ((25. Dezember) – 1) zum vierten Advent.
Fällt der 25. Dezember auf einen Dienstag, dann führt ((25. Dezember) – 2) zum vierten Advent.
Fällt der 25. Dezember auf einen Mittwoch, dann führt ((25. Dezember) – 3) zum vierten Advent.
Fällt der 25. Dezember auf einen Donnerstag, dann führt ((25. Dezember) – 4) zum vierten Advent.
Fällt der 25. Dezember auf einen Freitag, dann führt ((25. Dezember) – 5) zum vierten Advent.
Fällt der 25. Dezember auf einen Samstag, dann führt ((25. Dezember) – 6) zum vierten Advent.
Fällt der 25. Dezember auf einen Sonntag, dann führt ((25. Dezember) – 7) zum vierten Advent.
Wir müssen also wissen, auf welchen Wochentag der 25. Dezember fällt. Die Funktion WOCHENTAG() liefert uns zu jedem Datum eine fortlaufende Nummer von 1 bis 7. Jetzt müssen wir nur noch wissen, zu welchem Wochentag die Wochentagsnummer 1 gehört.
Das können wir selbst bestimmen. Benutzen wir die Funktion mit den Standardwerten, also so:
=WOCHENTAG(Datum)
dann ist der erste Tag in der Woche ein Sonntag. Benutzen wir jedoch den zweiten Parameter der Formel:
=WOCHENTAG(Datum;2)
dann beginnt die Zählung am Montag, was uns das Leben sehr erleichtert. Denn wir wissen aus obiger Auflistung, dass wir am Montag - 1 rechnen müssen, am Dienstag - 2, usw.
Der vierte Advent ist also:
=25. Dezember – WOCHENTAG(25. Dezember;2)
Gehen wir davon aus, dass die Daten für das aktuelle Jahr berechnet werden sollen, so steht für den 25. Dezember:
=DATUM(JAHR(HEUTE());12;25)
Soll das Jahr flexibel sein, kann man es beispielsweise auch in einer Zelle oder einem Namen hinterlegen, dann könnte die Formel für den 25. Dezember so lauten:
=DATUM(Kalenderjahr;12;25)
Und nun heißt die Formel für den vierten Advent:
=DATUM(KalenderJahr;12;25)-WOCHENTAG(DATUM(KalenderJahr;12;25);2)
Für den dritten Advent werden zusätzliche 7 Tage abgezogen, für den zweiten 14 und für den ersten Advent 21 Tage:
=DATUM(KalenderJahr;12;25)-WOCHENTAG(DATUM(KalenderJahr;12;25);2)-7
=DATUM(KalenderJahr;12;25)-WOCHENTAG(DATUM(KalenderJahr;12;25);2)-14
=DATUM(KalenderJahr;12;25)-WOCHENTAG(DATUM(KalenderJahr;12;25);2)-21
Für den Buß- und Bettag müssen vom vierten Advent 32 Tage abgezogen werden:
=DATUM(KalenderJahr;12;25)-WOCHENTAG(DATUM(KalenderJahr;12;25);2)-32
1.3. Immer am vierten Montag im November...
...findet der traditionsreiche Berner Zibelemärit (Zwiebelmarkt) statt. Er dient hier als Beispiel, wie man das Datum eines variablen Jahrestages ermittelt. Bereits bei der Berechnung der Adventstage im vorigen Kapitel hatten wir ein ähnliches Beispiel.
Vom vierten Montag im November wissen wir genau, dass er 3*7=21 Tage nach dem ersten Montag stattfindet. Also interessiert uns zunächst der erste Montag im November. Für den Fall, dass der erste November ein Montag ist, kennen wir das Datum:
=Datum(Kalenderjahr;11;1)
wobei Kalenderjahr z.B. für eine Zelle steht, in welcher das gesuchte Jahr hinterlegt ist. Wenn es um das aktuelle Jahr geht, könnte auch stehen:
=Datum(Kalenderjahr(HEUTE());11;1)
Wenn der erste November kein Montag ist, müssen wir das Datum für den ersten Montag erst suchen. Dazu sehen wir uns die Liste an, die wir mit der Funktion =WOCHENTAG(Datum;2) für jeden Tag der Woche erhalten:
Dienstag ergibt 2, Mittwoch 3, usw. bis zum Sonntag, der bei der obigen Variante der WOCHENTAG-Funktion 7 ergibt 1. Daraus ergibt sich folgende Regel:
Fällt der 1. November auf einen Dienstag, so müssen wir zum 1.11. 6 Tage hinzuzählen, um das Datum des ersten Montags im Novembers zu erhalten, fällt der 1.11. auf einen Mittwoch, müssen wir 5 Tage hinzuzählen, usw..
Man könnte nun eine verschachtelte WENN-Formel aufbauen, welche all diese Situationen abfragt. Schöner wäre allerdings, man fände eine Rechenformel, die für alle Nicht-Montage angewendet werden kann. Aus der nachstehenden Tabelle sehen wir, dass die Summe aus der Zahl, die wir jeweils mit der WOCHENTAG-Funktion erhalten und der Zahl, die hinzugezählt werden muss, um auf den folgenden Montag zu kommen, für alle Wochentage außer Montag 8 ergibt.
Wenn wir also vom Ergebnis 8 ausgehen, sehen wir, dass die Differenz für alle Nicht-Montage gleich berechnet werden kann:
8-WOCHENTAG(Datum(Kalenderjahr;11;1);2)
|
A |
B |
C |
D |
|
|
Im Fall von: |
Ergibt sich als Wochentag für den 1. November: |
Der erste Montag im November fällt auf: |
Differenz als allgemeine Formel: |
|
|
1 |
Montag, |
=WOCHENTAG(A1;2) |
=DATUM(Kalenderjahr;11;1) |
0 |
|
2 |
Dienstag, |
=WOCHENTAG(A2;2) |
=DATUM(Kalenderjahr;11;1)+6 |
=8-WOCHENTAG(A2;2) |
|
3 |
Mittwoch, |
=WOCHENTAG(A3;2) |
=DATUM(Kalenderjahr;11;1)+5 |
=8-WOCHENTAG(A3;2) |
|
4 |
Donnerstag, |
=WOCHENTAG(A4;2) |
=DATUM(Kalenderjahr;11;1)+4 |
=8-WOCHENTAG(A4;2) |
|
5 |
Freitag, |
=WOCHENTAG(A5;2) |
=DATUM(Kalenderjahr;11;1)+3 |
=8-WOCHENTAG(A5;2) |
|
6 |
Samstag, |
=WOCHENTAG(A6;2) |
=DATUM(Kalenderjahr;11;1)+2 |
=8-WOCHENTAG(A6;2) |
|
7 |
Sonntag, |
=WOCHENTAG(A7;2) |
=DATUM(Kalenderjahr;11;1)+1 |
=8-WOCHENTAG(A7;2) |
Somit heißt unsere Formel für den vierten Montag im November:
=WENN(WOCHENTAG(DATUM(Kalenderjahr;11;1);2)=1;
DATUM(Kalenderjahr;11;1)+3*7;
DATUM(Kalenderjahr;11;1)+8-WOCHENTAG(DATUM(Kalenderjahr;11;1);2)+3*7)
2. Zugriff auf bestimmte Wochentage
Inhaltsverzeichnis
3. Zu einem bestimmten Wochentag vor- bzw. zurückrechnen
Manchmal braucht man im Zusammenhang mit Datumsfunktionen eine Formel, die ausgehend von einem variablen Datum immer z.B. den nächsten (oder letzten) Donnerstag, Mittwoch oder sonst einen bestimmten Wochentag liefert.
3.1. Zum nächsten Montag (Dienstag, Mittwoch,....)
Da unser Ausgangsdatum variabel ist, müssten wir theoretisch 7 WENN-Fälle unterscheiden. Solche verschachtelten Funktionen sind aber schwierig zu dominieren und wenn die Formel auch noch dahingehend flexibel sein soll, dass sie auf verschiedene angestrebte Wochentage reagiert, wird das Ganze sehr unübersichtlich. Wir suchen daher nach einer mathematischen Lösung.
Wir haben:
- ein unbekanntes Ausgangsdatum
- einen fixen angestrebten Wochentag
- einen unbekannten Ausgangs-Wochentag
Nun wissen wir, dass wir mit einer mathematischen Gleichung nur eine Unbekannte ermitteln können. Wir müssen also versuchen, in dieser Liste eine Unbekannte wegzubekommen. Das Ausgangsdatum ist per Definition variabel, also die Unbekannte, die uns in jedem Fall bleibt. Was aber ist mit dem Ausgangs-Wochentag? Kann man den zu einer bekannten Größe machen?
Man kann:
|
A |
B |
C |
Indem wir von einem Datum den zugehörigen Wochentag abziehen, kommen wir immer zum letzten Samstag.2 |
|
|
1 |
Startdatum |
Der letzte Samstag |
Formel in Spalte B |
|
|
2 |
Mi 20.Dez 06 |
Sa 16.Dez 06 |
=A2-WOCHENTAG(A2) |
|
|
3 |
Do 21.Dez 06 |
Sa 16.Dez 06 |
=A3-WOCHENTAG(A3) |
|
|
4 |
Fr 22.Dez 06 |
Sa 16.Dez 06 |
=A4-WOCHENTAG(A4) |
|
|
5 |
Sa 23.Dez 06 |
Sa 16.Dez 06 |
=A5-WOCHENTAG(A5) |
|
|
6 |
So 24.Dez 06 |
Sa 23.Dez 06 |
=A6-WOCHENTAG(A6) |
|
|
7 |
Mo 25.Dez 06 |
Sa 23.Dez 06 |
=A7-WOCHENTAG(A7) |
|
|
8 |
Di 26.Dez 06 |
Sa 23.Dez 06 |
=A8-WOCHENTAG(A8) |
Nachdem wir nun für unsere Vorwärtszählung nicht von einem beliebigen Wochentag ausgehen, sondern immer vom davorliegenden Samstag, wissen wir stets, was wir hinzuzählen müssen, um zum tatsächlich angestrebten Wochentag zu gelangen:
|
A |
B |
C |
D |
E |
|
|
1 |
Startdatum |
=$A2-WOCHENTAG($A2) |
=$A2-WOCHENTAG($A2) |
=$A2-WOCHENTAG($A2) |
=$A2-WOCHENTAG($A2) |
|
2 |
Do 21.Dez 06 |
Sa 23.Dez 06 |
So 17.Dez 06 |
Mo 18.Dez 06 |
Di 19.Dez 06 |
|
3 |
Fr 22.Dez 06 |
Sa 23.Dez 06 |
So 17.Dez 06 |
Mo 18.Dez 06 |
Di 19.Dez 06 |
|
4 |
Sa 23.Dez 06 |
Sa 23.Dez 06 |
So 17.Dez 06 |
Mo 18.Dez 06 |
Di 19.Dez 06 |
|
5 |
So 24.Dez 06 |
Sa 30.Dez 06 |
So 24.Dez 06 |
Mo 25.Dez 06 |
Di 26.Dez 06 |
|
6 |
Mo 25.Dez 06 |
Sa 30.Dez 06 |
So 24.Dez 06 |
Mo 25.Dez 06 |
Di 26.Dez 06 |
|
7 |
Di 26.Dez 06 |
Sa 30.Dez 06 |
So 24.Dez 06 |
Mo 25.Dez 06 |
Di 26.Dez 06 |
|
8 |
Mi 27.Dez 06 |
Sa 30.Dez 06 |
So 24.Dez 06 |
Mo 25.Dez 06 |
Di 26.Dez 06 |
Die Problemfälle sind in der oberen Tabelle hervorgehoben: Immer, wenn der angestrebte Wochentag mit dem Wochentag des Ausgangsdatums übereinstimmt, gelangen wir zum Ausgangsdatum anstatt zum entsprechenden Datum der kommenden Woche.
Nun könnte man versuchen, diesen Fall durch eine WENN-Abfrage in den Griff zu bekommen. Es geht aber auch eleganter.
Die Situation, die wir bisher haben ist die, dass wir maximal um 7 Tage zurückrechnen und anschließend maximal um 7 Tage vorwärts. Wir lösen das Problem, indem wir fix um 8 Tage vorwärts rechnen. Das bedeutet aber, dass wir die Formel anders aufbauen müssen.
Bisher haben wir uns einen fixen Startpunkt gesucht - immer der letzte Samstag – zu dem wir je nachdem 1, 2,...7 Tage hinzugezählt haben. Da wir jetzt fix 8 Tage hinzuzählen wollen, muss also der Startpunkt variabel werden und nicht auf den Samstag fixiert:
|
A |
B |
C |
D |
E |
|
|
1 |
Startdatum |
=$A2-WOCHENTAG($A2-1) |
=$A2-WOCHENTAG($A2-2) |
=$A2-WOCHENTAG($A2-3) |
=$A2-WOCHENTAG($A2-4) |
|
2 |
Do 21.Dez 06 |
Mo 25.Dez 06 |
Di 26.Dez 06 |
Mi 27.Dez 06 |
Do 28.Dez 06 |
|
3 |
Fr 22.Dez 06 |
Mo 25.Dez 06 |
Di 26.Dez 06 |
Mi 27.Dez 06 |
Do 28.Dez 06 |
|
4 |
Sa 23.Dez 06 |
Mo 25.Dez 06 |
Di 26.Dez 06 |
Mi 27.Dez 06 |
Do 28.Dez 06 |
|
5 |
So 24.Dez 06 |
Mo 25.Dez 06 |
Di 26.Dez 06 |
Mi 27.Dez 06 |
Do 28.Dez 06 |
|
6 |
Mo 25.Dez 06 |
Mo 01.Jan 07 |
Di 26.Dez 06 |
Mi 27.Dez 06 |
Do 28.Dez 06 |
|
7 |
Di 26.Dez 06 |
Mo 01.Jan 07 |
Di 02.Jan 07 |
Mi 27.Dez 06 |
Do 28.Dez 06 |
|
8 |
Mi 27.Dez 06 |
Mo 01.Jan 07 |
Di 02.Jan 07 |
Mi 03.Jan 07 |
Do 28.Dez 06 |
3.1.1. Anwendungsbeispiele
Für die Erklärung des Formelaufbaus haben wir je nach Wochentag einen fixen Wert benutzt:
$A2-WOCHENTAG($A2-1)+8 → zum nächsten Montag
$A2-WOCHENTAG($A2-2)+8 → zum nächsten Dienstag
$A2-WOCHENTAG($A2-3)+8 → zum nächsten Mittwoch
usw.
Vielleicht ist der angestrebte Wochentag aber nicht immer der gleiche. Dann könnte man z.B. eine Zelle benutzen, in die man den jeweils zu benutzenden Wert hinterlegt, dann könnte die Formel so aussehen:
$A2-WOCHENTAG($A2-$A$1)+83
Oder man hinterlegt in dieser Zelle keine Werte, sondern die Wochentage: Mo, Di, Mi, usw. Dann müsste man eine WENN-Formel einbauen:
=WENN($A$1="Mo";1; WENN($A$1="Di";2; WENN($A$1="Mi";3; WENN($A$1="Do";4; WENN($A$1="Fr";5; WENN($A$1="Sa";6;7))))))
Die ganze Formel würde dann so aussehen:
$A2-WOCHENTAG($A2-WENN($A$1="Mo";1; WENN($A$1="Di";2; WENN($A$1="Mi";3; WENN($A$1="Do";4; WENN($A$1="Fr";5; WENN($A$1="Sa";6;7)))))))
Statt WENN-Formeln könnte man auch mit der Funktion SVERWEIS() arbeiten.
3.2. Zum letzten Montag (Dienstag, Mittwoch,....)
Im vorigen Beispiel mussten wir zuerst zurückrechnen und anschließend wieder vorwärtsrechnen, wodurch wir das Problem lösen mussten, dass die Anzahl zurückgerechneter Tage nicht gleich sein durfte wie die Anzahl vorwärtsgerechneter Tage.
Wenn wir einen zurückliegenden Wochentag suchen, haben wir es leichter:
(Datum-WOCHENTAG(Datum)) → zum letzten Samstag
(Datum-WOCHENTAG(Datum+1)) → zum letzten Freitag
(Datum-WOCHENTAG(Datum+2)) → zum letzten Donnerstag
Auch hier kann natürlich der Ausdruck +1, +2, usw. ersetzt werden durch einen Zellbezug oder eine WENN-Formel wie in den obigen Anwendungsbeispielen beschrieben.
3.3. Der erste Montag von jedem Monat des laufenden Jahres
Das folgende Beispiel geht davon aus, dass das aktuelle Jahr in einer benannten Zelle hinterlegt ist, und man sich mit der Bezeichnung AktuellesJahr darauf beziehen kann. Die Jahreszahl kann dabei direkt oder in der Form =JAHR(HEUTE()) gespeichert sein. Die hier verwendete Bezeichung AktuellesJahr kann natürlich auch durch eine Zelladresse oder eine Formel ersetzt werden.
|
A |
B |
|
|
1 |
Montag, 02.01.2006 |
DATUM(AktuellesJahr;ZEILE();8) -WOCHENTAG(DATUM(AktuellesJahr;ZEILE();6) |
|
2 |
Montag, 06.02.2006 |
|
|
3 |
Montag, 06.03.2006 |
|
|
4 |
Montag, 03.04.2006 |
|
|
5 |
Montag, 08.05.2006 |
|
|
6 |
Montag, 05.06.2006 |
|
|
7 |
Montag, 03.07.2006 |
|
|
8 |
Montag, 07.08.2006 |
|
|
9 |
Montag, 04.09.2006 |
|
|
10 |
Montag, 02.10.2006 |
|
|
11 |
Montag, 06.11.2006 |
|
|
12 |
Montag, 04.12.2006 |
Der jeweils erste Dienstag:
=DATUM(AktuellesJahr;ZEILE();8)-WOCHENTAG(DATUM(AktuellesJahr;ZEILE();5)
Der jeweils erste Mittwoch:
=DATUM(AktuellesJahr;ZEILE();8)-WOCHENTAG(DATUM(AktuellesJahr;ZEILE();4)
Der jeweils erste Donnerstag:
=DATUM(AktuellesJahr;ZEILE();8)-WOCHENTAG(DATUM(AktuellesJahr;ZEILE();3)
Der jeweils erste Freitag:
=DATUM(AktuellesJahr;ZEILE();8)-WOCHENTAG(DATUM(AktuellesJahr;ZEILE();2)
Der jeweils erste Samstag:
=DATUM(AktuellesJahr;ZEILE();8)-WOCHENTAG(DATUM(AktuellesJahr;ZEILE();8)
Der jeweils erste Sonntag:
=DATUM(AktuellesJahr;ZEILE();8)-WOCHENTAG(DATUM(AktuellesJahr;ZEILE();7)
3.4. Samstag/Sonntag auslassen
Das folgende Beispiel ergibt einen Kalender, der jeden Monat mit dem ersten Montag dieses Monats beginnt und nur die Wochentage berücksichtigt.
Um den jeweils ersten Montag pro Monat zu ermitteln gehen wir wie oben beschrieben vom jeweils 8. des Monats aus und rechnen zurück. Dieses Datum – der 8. des Monats – verwenden wir gleich als Spaltentitel und ordnen den Zellen in Zeile 1 das Zahlenformat: MMMM JJJJ zu.
Im Beispiel steht in Spalte 1 der Januar, in Spalte 2 der Februar, etc. Also können wir die Spaltennummer benutzen, um den jeweiligen Monat festzulegen. Wir gehen davon aus, dass es um das aktuelle Jahr gehen soll, daher definiert sich das Jahr mit der Formel =JAHR(HEUTE()). Die ganze Formel in allen Zellen der ersten Zeile lautet also:
=DATUM(JAHR(HEUTE());SPALTE();8)
|
A |
B |
C |
D |
E |
|
|
1 |
Januar 2006 |
Februar 2006 |
März 2006 |
April 2006 |
Mai 2006 |
|
2 |
Mo, 02.01.06 |
Mo, 06.02.06 |
Mo, 06.03.06 |
Mo, 03.04.06 |
Mo, 01.05.06 |
|
3 |
Di, 03.01.06 |
Di, 07.02.06 |
Di, 07.03.06 |
Di, 04.04.06 |
Di, 02.05.06 |
|
4 |
Mi, 04.01.06 |
Mi, 08.02.06 |
Mi, 08.03.06 |
Mi, 05.04.06 |
Mi, 03.05.06 |
|
5 |
Do, 05.01.06 |
Do, 09.02.06 |
Do, 09.03.06 |
Do, 06.04.06 |
Do, 04.05.06 |
|
6 |
Fr, 06.01.06 |
Fr, 10.02.06 |
Fr, 10.03.06 |
Fr, 07.04.06 |
Fr, 05.05.06 |
|
7 |
Mo, 09.01.06 |
Mo, 13.02.06 |
Mo, 13.03.06 |
Mo, 10.04.06 |
Mo, 08.05.06 |
|
8 |
Di, 10.01.06 |
Di, 14.02.06 |
Di, 14.03.06 |
Di, 11.04.06 |
Di, 09.05.06 |
|
9 |
Mi, 11.01.06 |
Mi, 15.02.06 |
Mi, 15.03.06 |
Mi, 12.04.06 |
Mi, 10.05.06 |
|
10 |
Do, 12.01.06 |
Do, 16.02.06 |
Do, 16.03.06 |
Do, 13.04.06 |
Do, 11.05.06 |
|
11 |
Fr, 13.01.06 |
Fr, 17.02.06 |
Fr, 17.03.06 |
Fr, 14.04.06 |
Fr, 12.05.06 |
|
12 |
Mo, 16.01.06 |
Mo, 20.02.06 |
Mo, 20.03.06 |
Mo, 17.04.06 |
Mo, 15.05.06 |
Die Formel in A2 lautet:
=A1-WOCHENTAG(A1+5)
Diese Formel kann nun nach rechts kopiert werden.
In A3 muss eigentlich nur gerechnet werden: =A2+1. Dann können wir diese Formel aber nur zweimal kopieren und müssen sie am Freitag anpassen und 3 statt 1 hinzu zählen. Also erweitern wir die Formel in A3 auf:
=A2+1+WENN(WOCHENTAG(A2)=6;2) Diese Formel kann nun nach unten und rechts kopiert werden.
3.4.1. Jahreswechsel
Wir haben beim obigen Kalender die Spaltennummer benutzt, um den aktuellen Monat zu ermitteln. Wenn Sie nun denken, bei Spalte 12 sei Schluss, so irren Sie. Die Funktion DATUM() ist intelligenter als es auf den ersten Blick scheint:
Man kann den obigen Kalender getrost weiter nach rechts kopieren:
|
A |
C |
D |
E |
|
|
1 |
November 2006 |
Dezember 2006 |
Januar 2007 |
Februar 2007 |
|
2 |
Mo, 06.11.06 |
Mo, 04.12.06 |
Mo, 01.01.07 |
Mo, 05.02.07 |
Siehe auch: Datum
3.5. Der jeweils letzte Montag, Dienstag,... des Monats
Das folgende Beispiel geht davon aus, dass das laufende Jahr als Basis dienen soll und der Monat aus der Spaltennummer ermittelt wird (vgl. oben). Wenn das Basisdatum anders ermittelt wird, sind die Parameter Jahr, Monat, Tag der Funktion DATUM() entsprechend anzupassen.
Für die Ermittlung des letzten Montags (Dienstags, Mittwochs,...) des laufenden Monats gehen wir vom Folgemonat aus (daher SPALTE()+1). Wir machen uns die Tatsache zu nutze, dass ein Datum, von dem wir seine Wochentags-Nummer abziehen, uns zum davor liegenden Samstag führt (siehe oben). Wenn wir also vom ersten Tag des Folgemonats den Wochentag dieses Monatsersten abziehen, erhalten wir den letzten Samstag des laufenden Monats.
Für alle anderen gesuchten Wochentage ziehen wir vom Monatsersten des Folgemonats nicht den Wochentag des Monatsersten ab, sondern verschieben ihn gemäss folgender Tabelle:
|
A |
B |
|
|
1 |
Januar 2006 |
=DATUM(JAHR(HEUTE());SPALTE();1) |
|
2 |
Sa, 28.01.06 |
=DATUM(JAHR(HEUTE());SPALTE()+1;1) -WOCHENTAG(DATUM(JAHR(HEUTE());SPALTE()+1;1)) |
|
3 |
Fr, 27.01.06 |
=DATUM(JAHR(HEUTE());SPALTE()+1;1) -WOCHENTAG(DATUM(JAHR(HEUTE());SPALTE()+1;2)) |
|
4 |
Do, 26.01.06 |
=DATUM(JAHR(HEUTE());SPALTE()+1;1) -WOCHENTAG(DATUM(JAHR(HEUTE());SPALTE()+1;3)) |
|
5 |
Mi, 25.01.06 |
=DATUM(JAHR(HEUTE());SPALTE()+1;1) -WOCHENTAG(DATUM(JAHR(HEUTE());SPALTE()+1;4)) |
|
6 |
Di, 31.01.06 |
=DATUM(JAHR(HEUTE());SPALTE()+1;1) -WOCHENTAG(DATUM(JAHR(HEUTE());SPALTE()+1;5)) |
|
7 |
Mo, 30.01.06 |
=DATUM(JAHR(HEUTE());SPALTE()+1;1) -WOCHENTAG(DATUM(JAHR(HEUTE());SPALTE()+1;6)) |
|
8 |
So, 29.01.06 |
=DATUM(JAHR(HEUTE());SPALTE()+1;1) -WOCHENTAG(DATUM(JAHR(HEUTE());SPALTE()+1;7)) |
4. Rechnen mit Datum und Zeit
|
Inhaltsverzeichnis
- Stunden addieren und in Dezimalzahlen umrechnen
- Minuten und Sekunden, Differenz im Zeit- oder Dezimalformat
- JAHR(), MONAT(), TAG(), STUNDE(), MINUTE(), SEKUNDE()
- Stunden und Tage, arbeiten mit verschiedenen Formaten
- Stunden, Tage, Minuten getrennt
- Datum und Zeit aus verschiedenen Zellen
- Anzahl Tage zwischen zwei Datumsangaben
- Anzahl Monate zwischen zwei Datumsangaben
- Anzahl Jahre zwischen zwei Datumsangaben
- Ein Datum +/- eine bestimmte Anzahl Monate
- Was ist ein Tag, was ist ein Monat, was ist ein Jahr?
- Die Funktion UMWANDELN_ADD
- Arbeitszeit abzüglich Feiertage
- Arbeitstag-Datum in der Zukunft oder Vergangenheit suchen
- Bruchteile von Jahren
- Mitternacht
- Schaltjahre
Zeitwerte rechnen (wie Datumswerte) in ganzen Tagen. Das wird offensichtlich, wenn man einen Zeitwert durch 1 dividiert (A1 sei 12:00 und B2=A1/1, das Resultat ist 0,5)
4.1. Stunden addieren und in Dezimalzahlen umrechnen
Wenn Zeitwerte z.B. mit einem Stundenansatz multipliziert werden sollen, werden sie als Dezimalwert benötigt.
Aus einem Zeitwert wird durch die Multiplikation mit 24 ein dezimaler Stundenbetrag. Aus einem Zeitwert wird durch die Multiplikation mit 24*60 ein dezimaler Minutenbetrag. Aus einem Zeitwert wird durch die Multiplikation mit 24*60*60 ein dezimaler Sekundenbetrag.
|
A |
B |
C |
D |
E |
F |
G |
H |
||
|
1 |
Start |
Ende |
Start |
Ende |
Stunden |
Stunden |
Stunden |
Stunden |
|
|
2 |
07:00 |
11:20 |
13:30 |
17:00 |
07:50 |
7,84 |
7,75 |
8,00 |
|
|
3 |
|||||||||
|
4 |
07:00 |
11:20 |
13:30 |
17:00 |
07:50 |
Hinweis: |
|||
|
5 |
07:00 |
11:20 |
13:30 |
17:00 |
07:50 |
||||
|
6 |
07:00 |
11:20 |
13:30 |
17:00 |
07:50 |
||||
|
7 |
07:00 |
11:20 |
13:30 |
17:00 |
07:50 |
||||
|
8 |
Summe: |
31:20 |
Format: [HH]:MM |
||||||
|
9 |
Summe: |
07:20 |
Format: HH:MM |
||||||
|
Zelle E2 |
Formel: =B2-A2+D2-C2 |
|
Zelle F2 |
Formel: =(B2-A2+D2-C2)*24 |
|
Zelle G2 |
Formel: =VRUNDEN((B2-A2+D2-C2)*24;0,25) |
|
Zelle H2 |
Formel: =OBERGRENZE((B2-A2+D2-C2)*24;0,25) |
4.2. Minuten und Sekunden, Differenz im Zeit- oder Dezimalformat
Im vorigen Beispiel wurden Stunden durch die Multiplikation mit 24 in einen Dezimalwert umgerechnet. Bei Minuten muss zusätzlich mit 60 multipliziert werden. Im folgenden wird die Differenz zwischen zwei Zeiten errechnet und sowohl im Zeit- wie auch Dezimalformat ausgegeben, um z.B. Telefonkosten abzurechnen.
Bitte auch hier den Unterschied zwischen dem Format [HH]:MM:SS und HH:MM:SS bedenken (vgl. oben).
|
A |
B |
C |
D |
E |
F |
|
|
1 |
Start |
Ende |
Differenz im Zeitformat |
Ganze Minuten |
Sekunden |
Differenz im Dezimalformat |
|
2 |
12:41:10 |
12:45:50 |
00:04:40 |
4 |
40 |
4,67 |
|
Zellen A2/B2 |
Format: HH:MM:SS |
|
Zelle C2 |
Formel: =B1-A1 |
|
Zelle D2 |
Formel: =GANZZAHL(B2*24*60-A2*24*60) |
|
Zelle E2 |
Formel: =(B2-A2)*24*60*60-GANZZAHL((B2-A2)*24*60)*60 |
|
Zelle F2 |
Formel: =(B2-A2)*60*24 |
4.3. JAHR(), MONAT(), TAG(), STUNDE(), MINUTE(), SEKUNDE()
Mit diesen Funktionen kann man aus einem Datums- und/oder Zeitwert die gewünschten Details herausfiltern.
=JAHR(HEUTE())
ergibt beispielsweise die zum aktuellen Datum passende Jahreszahl vierstellig aus.
=MINUTE(JETZT())
ergibt die Minuten der aktuellen Uhrzeit.
ACHTUNG: Diese Funktionen liefern nicht die tatsächliche Anzahl z.B. von Stunden.
Beispiel: Aus einer Zeitspalte wird die Summe gebildet und ergibt 24:44:00, also 24 Stunden und 44 Minuten. Wenn man auf diesen Wert die Funktion STUNDE() anwendet, so ergibt sich:
=STUNDE(24:44:00) -> Ergebnis: 0
STUNDE() wird als Zahl zwischen 0 und 23 wiedergegeben. Ab 24 Stunden wird wieder bei 0 angefangen. Die tatsächliche Anzahl an Stunden muss man also anders berechnen, wie z.B.:
=GANZZAHL(24:44:00*24) bzw. =GANZZAHL(ZelleMitZeitwert*24)
4.4. Stunden und Tage, arbeiten mit verschiedenen Formaten
|
A |
B |
C |
D |
E |
F |
G |
|
|
1 |
Start |
Ende |
Stunden und |
Stunden |
Tage |
||
|
2 |
12.07.05 13:30 |
14.07.05 17:10 |
51:40 |
03:40 |
51,67 |
2,15 |
2,15 |
|
Zellen A2/B2 |
Format: TT.MM.JJ HH:MM |
|
Zelle C2 |
Formel: =B2-A2 |
|
Zelle D2 |
Formel: =B2-A2 |
|
Zelle E2 |
Formel: =(B2-A2)*24 |
|
Zelle F2 |
Formel: =TAGE(B2-A2) |
|
Zelle G2 |
Formel: =B2-A2 |
4.5. Stunden, Tage, Minuten getrennt
|
A |
B |
C |
D |
E |
|
|
1 |
Start |
Ende |
Ganze Tage |
Rest ganze Stunden |
Rest Minuten |
|
2 |
12.07.05 13:30 |
14.07.05 17:10 |
2 |
3 |
40 |
|
Zellen A2/B2 |
Format: TT.MM.JJ HH:MM |
|
Zelle C2 |
Formel: =GANZZAHL(B2-A2) |
|
Zelle D2 |
Formel: =GANZZAHL((B2-A2)*24)-GANZZAHL(B2-A2)*24 |
|
Zelle E2 |
Formel: =(B2-A2)*24*60-GANZZAHL((B2-A2)*24)*60 |
4.6. Datum und Zeit aus verschiedenen Zellen
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
|
|
1 |
Start- |
Start- |
Schluss- |
Schluss |
Tage |
Stunden |
Minuten |
Ganze Tage |
Rest ganze Stunden |
Rest Minuten |
|
2 |
01.08.2005 |
08:10 |
07.08.2005 |
15:40 |
6,31 |
151,50 |
9090 |
6 |
7 |
30 |
|
Zellen A2/C2 |
Format: TT.MM.JJJJ |
|
Zellen B2/D2 |
Format: HH:MM |
|
Zelle E2 |
Formel: =(C2+D2)-(A2+B2) |
|
Zelle F2 |
Formel: =((C2+D2)-(A2+B2))*24 |
|
Zelle G2 |
Formel: =((C2+D2)-(A2+B2))*24*60 |
|
Zelle H2 |
Formel: =GANZZAHL((C2+D2)-(A2+B2)) |
|
Zelle I2 |
Formel: =GANZZAHL(((C2+D2)-(A2+B2))*24)-GANZZAHL((C2+D2)-(A2+B2))*24 |
|
Erklärung: |
|
|
Zelle J2 |
Formel: =((C2+D2)-(A2+B2))*24*60-GANZZAHL(((C2+D2)-(A2+B2))*24)*60 |
|
Erklärung: |
|
4.7. Anzahl Tage zwischen zwei Datumsangaben
|
A |
B |
C |
D |
F |
|||
|
1 |
Von |
Bis |
Anzahl Tage |
||||
|
2 |
01.01.2002 |
15.03.2007 |
1899 |
Formel in C2: |
B2-A2 |
||
|
3 |
|
|
1899 |
Formel in C3: |
=TAGE(B2;A2) |
||
|
4 |
|
|
1874 |
Formel in C4: |
=TAGE360(A2;B2;0) |
Für die Zinsberechnung geht man üblicherweise von 360 Tagen pro Jahr aus. |
0: US-Methode (NASD) |
|
5 |
|
|
1874 |
Formel in C5: |
=TAGE360(A2;B2;1) |
1: europäische Methode (NASD) |
|
4.8. Anzahl Monate zwischen zwei Datumsangaben
|
A |
B |
C |
D |
F |
||
|
1 |
Von |
Bis |
Anzahl Monate |
|||
|
2 |
29.02.2012 |
28.02.2013 |
11 |
Formel in C2: |
=MONATE(A2;B2;0) |
0: Intervall |
|
3 |
29.02.2012 |
28.02.2013 |
12 |
Formel in C3: |
=MONATE(A2;B2;1) |
1: in Kalendermonaten |
4.9. Anzahl Jahre zwischen zwei Datumsangaben
|
A |
B |
C |
D |
F |
||
|
1 |
Von |
Bis |
Anzahl Jahre |
|||
|
2 |
01.02.01 |
15.01.05 |
4 |
Formel in C2: |
=JAHRE(A2;B2;1) |
1: in Kalenderjahren |
|
3 |
|
|
3 |
Formel in C3: |
=JAHRE(A2;B2;0) |
0: Intervall |
|
4 |
|
|
3,96 |
Formel in C4: |
=BRTEILJAHRE(A2;B2;0) |
0: US-Methode (NASD), 12 Monate je 30 Tage |
|
5 |
|
|
3,95 |
Formel in C5: |
=BRTEILJAHRE(A2;B2;1) |
1: genaue Anzahl Tage im Monat, genaue Anzahl Tage im Jahr |
|
6 |
|
|
4,01 |
Formel in C6: |
=BRTEILJAHRE(A2;B2;2) |
2: genaue Anzahl Tage im Monat, Jahr hat 360 Tage |
|
7 |
|
|
3,96 |
Formel in C7: |
=BRTEILJAHRE(A2;B2;3) |
3: genaue Anzahl Tage im Monat, Jahr hat 365 Tage |
|
8 |
|
|
3,96 |
Formel in C8: |
=BRTEILJAHRE(A2;B2;4) |
4: Europa-Methode, 12 Monate je 30 Tage |
4.10. Ein Datum +/- eine bestimmte Anzahl Monate
Die Funktion EDATUM() bestimmt einen Tag, der eine wählbare Anzahl von Monaten vor oder nach einem Ausgangsdatum liegt. Dabei werden nur einzelne Tage berechnet, was zu diesen Ergebnissen führt:
|
A |
B |
C |
|
|
1 |
Ausgangsdatum |
Berechnetes Datum |
Formel in Spalte B |
|
2 |
29.03.07 |
28.02.07 |
=EDATUM(A2;-1) |
|
3 |
29.03.06 |
28.02.06 |
=EDATUM(A3;-1) |
|
4 |
29.03.05 |
28.02.05 |
=EDATUM(A4;-1) |
|
5 |
29.03.04 |
29.02.04 |
=EDATUM(A5;-1) |
|
6 |
29.03.03 |
28.02.03 |
=EDATUM(A6;-1) |
|
7 |
29.03.02 |
28.02.02 |
=EDATUM(A7;-1) |
|
8 |
30.03.02 |
28.02.02 |
=EDATUM(A8;-1) |
|
9 |
31.03.02 |
28.02.02 |
=EDATUM(A9;-1) |
4.11. Was ist ein Tag, was ist ein Monat, was ist ein Jahr?
Ist vom 1.1.05 bis zum 31.12.05 nun ein Jahr vergangen oder nicht? Sind es 11 oder 12 Monate? 364 Tage oder 365?
|
A |
B |
C |
D |
E |
|
|
1 |
Datum von |
Datum bis |
Anzahl Jahre |
Anzahl Monate |
Anzahl Tage |
|
2 |
01.01.2005 |
31.12.2005 |
0 |
11 |
364 |
|
3 |
Der Sachverhalt wird klar, sobald man auf das vollständige Zeitformat wechselt: |
||||
|
4 |
01.01.2005 00:00 |
31.12.2005 00:00 |
0 |
11 |
364 |
|
Zelle C2/C4 |
Formel: =JAHRE(A2;B2;0) |
|
Zelle D2/D4 |
Formel: =MONATE(A2;B2;0) |
|
Zelle E2/E4 |
Formel: =TAGE(B2;A2) |
Wenn man das bis-Datum als vollen Tag gerechnet haben will, muss man das in der Formel berücksichtigen:
|
A |
B |
C |
D |
E |
|
|
1 |
Datum von |
Datum bis |
Anzahl Jahre |
Anzahl Monate |
Anzahl Tage |
|
2 |
01.01.2005 |
31.12.2005 |
1 |
12 |
365 |
Theoretisch könnte man einfach 1 zum bis-Datum addieren. Um sicherzugehen, filtert man jedoch aus beiden Datumsangaben das reine Datum heraus, addiert aber dann zum bis-Datum 24 Stunden.4 Das ist später auch leichter nachzuvollziehen als einfach +1:
|
Zelle C2 |
Formel: =JAHRE(DATUM(JAHR(A2);MONAT(A2);TAG(A2)); |
|
Zelle D2 |
Formel: =MONATE(DATUM(JAHR(A2);MONAT(A2);TAG(A2)); |
|
Zelle E2 |
Formel: TAGE(DATUM(JAHR(B2);MONAT(B2);TAG(B2))+ZEIT(24;0;0); |
4.12. Die Funktion UMWANDELN_ADD
Diese Funktion erlaubt es, einen Wert von einer Maßeinheit in eine andere umzurechnen. Im Bereich Zeit kann die Formel von und nach den Einheiten:
-
Jahr: yr
-
Tag: day
-
Stunde: hr
-
Minute: mn
-
Sekunde: sec
umrechnen.
In den folgenden Beispielen wurden individuelle Zellformate benutzt, um die Einheiten zu den Werten anzuzeigen.
|
A |
B |
C |
D |
|
|
1 |
Ausgangseinheit |
Umgerechnet in |
Formel in Spalte B |
Zellformat in Spalte B |
|
2 |
1 Jahr(e) |
365 Tag(e) |
=UMWANDELN_ADD(A2;"yr";"day") |
0 [$ Tag(e)] |
|
3 |
1 Jahr(e) |
365,25 Tag(e) |
=UMWANDELN_ADD(A3;"yr";"day") |
0,00 [$ Tag(e)] |
|
4 |
1 Jahr(e) |
8766 Stunde(n) |
=UMWANDELN_ADD(A4;"yr";"hr") |
0 [$ Stunde(n)] |
|
5 |
1 Jahr(e) |
525960 Minute(n) |
=UMWANDELN_ADD(A5;"yr";"mn") |
0 [$ Minute(n)] |
|
6 |
1 Jahr(e) |
31557600 Sekunde(n) |
=UMWANDELN_ADD(A6;"yr";"sec") |
0 [$ Sekunde(n)] |
|
7 |
31 Tag(e) |
0,085 Jahr(e) |
=UMWANDELN_ADD(A7;"day";"yr") |
0,000 [$ Jahr(e)] |
4.13. Arbeitszeit abzüglich Feiertage
Mit der Funktion NETTOARBEITSTAGE() wird die Anzahl Arbeitstage errechnet, die zwischen zwei Kalenderdaten liegt. Optional kann ein Bereich genannt werden, der eine Liste von Feiertagsdaten enthält. Diese Feiertage werden – sofern sie auf Werktage fallen – von den Arbeitstagen abgerechnet.
|
A |
B |
C |
D |
|
|
2 |
01.01.05 |
Neujahr |
Datum von: |
20.03.05 |
|
3 |
25.03.05 |
Karfreitag |
Datum bis: |
05.04.05 |
|
4 |
27.03.05 |
Ostersonntag |
Differenz in Tagen: |
16 |
|
5 |
28.03.05 |
Tag der Arbeit |
Werktage: |
12 |
|
6 |
05.05.05 |
Christi Himmelfahrt |
Werktage abzüglich Feiertage: |
10 |
|
Zelle D4 |
Formel: =TAGE(D3;D2) |
|
Zelle D5 |
Formel: =NETTOARBEITSTAGE(D2;D3) |
|
Zelle D6 |
Formel: =NETTOARBEITSTAGE(D2;D3;A2:A6) |
4.14. Arbeitstag-Datum in der Zukunft oder Vergangenheit suchen
Mit der Funktion ARBEITSTAG() wird das Datum eines Arbeitstages ermittelt, der eine bestimmte Anzahl von Arbeitstagen von einem Ausgangsdatum entfernt liegt Optional kann ein Bereich genannt werden, der eine Liste von Feiertagsdaten enthält. Diese Feiertage werden – sofern sie auf Werktage fallen – von den Arbeitstagen abgerechnet.
|
A |
B |
C |
D |
|
|
2 |
01.01.05 |
Neujahr |
Datum von: |
20.03.05 |
|
3 |
25.03.05 |
Karfreitag |
Anzahl Tage: |
10 |
|
4 |
27.03.05 |
Ostersonntag |
Datum: |
01.04.05 |
|
5 |
28.03.05 |
Tag der Arbeit |
Datum (Feiertage berücksichtigt): |
05.04.05 |
|
6 |
05.05.05 |
Christi Himmelfahrt |
|
Zelle D4 |
Formel: =ARBEITSTAG(D2;D3) |
|
Zelle D5 |
Formel: =ARBEITSTAG(D2;D3;A2:A6) |
4.15. Bruchteile von Jahren
Man kann einen Zeitraum mit einem bekannten Anfangs- und einem bekannten Enddatum als Bruchteil eines Jahres darstellen lassen. Datei gibt es verschiedene Methoden (Basis 0 bis 4 im folgenden Beispiel) der Berechnung. Die Methoden unterscheiden sich in der Definition von Jahr und Monat. Nur mit der Basis 1 wird von der genauen Anzahl Tage im Monat ausgegangen, wodurch das Ergebnis in Schaltjahren variiert. Die europäische Methode wird mit Basis 4 angewendet und geht von 30 Tagen pro Monat aus. Eine Beschreibung aller Berechnungsmethoden liefert der Hilfetext.
|
A |
B |
C |
D |
E |
|
|
1 |
30.12.99 |
30.12.99 |
Basis |
Jahres-Bruchteil |
Formel |
|
2 |
29.04.07 |
08.09.07 |
0 |
0,358333333333333 |
=BRTEILJAHRE(A2;B2;C2) |
|
3 |
29.04.07 |
08.09.07 |
1 |
0,361643835616438 |
=BRTEILJAHRE(A3;B3;C3) |
|
4 |
29.04.07 |
08.09.07 |
2 |
0,366666666666667 |
=BRTEILJAHRE(A4;B4;C4) |
|
5 |
29.04.07 |
08.09.07 |
3 |
0.,361643835616438 |
=BRTEILJAHRE(A5;B5;C5) |
|
6 |
29.04.07 |
08.09.07 |
4 |
0,358333333333333 |
=BRTEILJAHRE(A6;B6;C6) |
|
Schaltjahr |
|||||
|
8 |
29.04.04 |
08.09.04 |
0 |
0,358333333333333 |
=BRTEILJAHRE(A8;B8;C8) |
|
9 |
29.04.04 |
08.09.04 |
1 |
0,360655737704918 |
=BRTEILJAHRE(A9;B9;C9) |
|
10 |
29.04.04 |
08.09.04 |
2 |
0,366666666666667 |
=BRTEILJAHRE(A10;B10;C10) |
|
11 |
29.04.04 |
08.09.04 |
3 |
0,361643835616438 |
=BRTEILJAHRE(A11;B11;C11) |
|
12 |
29.04.04 |
08.09.04 |
4 |
0,358333333333333 |
=BRTEILJAHRE(A12;B12;C12) |
4.16. Mitternacht
Zeitangaben, die über Mitternacht hinausgehen, sind tückisch. Im nachstehenden Beispiel sehen Sie in den Zeilen mit einem * was sich tatsächlich hinter der Zeit in der darüberliegenden Zelle verbirgt. Und welchen Unterschied die Zeitformate [HH] und HH aufweisen.
|
|
A |
B |
C |
D |
E |
F |
|
1 |
ANFANG |
ENDE |
DIFFERENZ |
Formeln |
Format in Spalte D |
|
|
2 |
23:00 |
01:45 |
02:45 |
=C2-B2 |
HH:MM |
|
|
3 |
* |
23:00:00 |
01:45:00 |
-21:15 |
=C2-B2 |
[HH]:MM |
|
4 |
23:00 |
01:45 |
02:45 |
=C4-B4 |
HH:MM |
|
|
5 |
* |
01.12.2004 23:00:00 |
02.12.2006 01:45:00 |
02:45 |
=C4-B4 |
[HH]:MM |
|
6 |
23:00 |
01:45 |
26:45 |
=C6-B6 |
HH:MM |
|
|
7 |
* |
01.12.2004 23:00:00 |
03.12.2006 01:45:00 |
02:50 |
=C6-B6 |
[HH]:MM |
|
Spätestens, wenn man ein solches Ergebnis bekommt, wird klar, dass nicht nur ein Formatproblem vorliegt, sondern auch ein logisches: |
||||
|
|
A |
B |
C |
D |
|
1 |
von |
bis |
DIFFERENZ |
Formeln |
|
2 |
23:00 |
01:45 |
02:45 |
=B2-A2 |
|
3 |
23:00 |
01:45 |
02:45 |
=B3-A3 |
|
4 |
|
|
-42:30:00 |
=SUMME(C2:C3) |
Ein Zeitwert ist immer Teil eines Datumswertes. Gibt man in eine Zelle nur eine Zeit ohne Datum ein, so geht Calc von einem zugehörigen Datum 0 aus. Welches Datum zum Tag 0 gehört, ist unter Extras → Optionen → OpenOffice.org Calc → Berechnen definiert, standardmäßig ist das der 30.12.1899.
Wenn man die Zeitwerte im obigen Beispiel mit dem Format
TT.MM.JJJJ HH:MM
anzeigen lässt, so erhält man:
von: 30.12.1899 23:00 bis 30.12.1899 01:45
woraus klar wird, dass die bis-Zeit kleiner als die von-Zeit ist.
Man kann die Zeiten auch als Zahl anzeigen lassen und erhält:
von: 0.96 bis: 0.07
woraus ebenfalls hervorgeht, dass die bis-Zeit kleiner ist als die von-Zeit.
Um nun eine korrekte Differenz zu bekommen, gibt es zwei Möglichkeiten. Entweder man integriert das Datum. Das kann in der gleichen Zelle geschehen, man kann direkt eintippen:
01.07.2007 18:00:00
oder man führt für "von" und "bis" jeweils zwei Spalten, eine mit dem Datum und eine mit der Zeit.
|
|
A |
B |
C |
D |
E |
F |
G |
|
1 |
von |
bis |
DIFFERENZ |
Formel |
|||
|
2 |
01.07.07 |
23:00 |
02.07.07 |
01:45 |
02:45 |
=(D2+E2)-(B2+C2) |
|
Die Einbeziehung des Datums hat den Vorteil, dass nun zwischen der von-Zeit und der bis-Zeit eine beliebige Anzahl Stunden liegen kann, also auch mehr als 24.
Wenn man sicher ist, dass zwischen von und bis weniger als 24 Stunden liegen, kann man auf das Datum verzichten und stattdessen die Formel für die Ermittlung der Differenz anpassen:
|
|
A |
B |
C |
D |
E |
|
1 |
von |
bis |
DIFFERENZ |
Formel |
|
|
2 |
23:00 |
01:45 |
02:45 |
=(24:00:00-B2)+C2 |
Und da 24:00:00 für Calc gleichbedeutend ist mit 1, kann man auch schreiben: =(1-B2)+C2
Wenn man nicht davon ausgehen kann, dass zwischen der von- und der bis-Zeit Mitternacht liegt, packt man das Ganze in eine WENN-Funktion:
=WENN(C2<B2;(1-B2)+C2;C2-B2)
4.17. Schaltjahre
Es gibt mehrere Funktionen, welche im Zusammenhang mit Schaltjahren verwendet werden können.
Die Funktion =ISTSCHALTJAHR(Datum) liefert einen Wahrheitswert.
Mit den Funktionen =TAGEIMJAHR(Datum) und =TAGEIMMONAT(Datum) erhält man die jeweilige Anzahl Tage und kann daraus schließen, ob es sich um ein Schaltjahr handelt oder nicht.
Beispiele:
=TAGEIMMONAT(DATUM(2004;2;1)) Ergebnis: 29 =TAGEIMJAHR(HEUTE()) Ergebnis: je nach Jahr 365 oder 366 =TAGEIMMONAT(MONATSENDE(DATUM(2004;1;1);1)) Ergebnis: 29 =ISTSCHALTJAHR(HEUTE()) Ergebnis: je nach Jahr FALSCH oder RICHTIG bzw. 0 oder 1
5. Die Flexibilität von DATUM()
Vielleicht haben Sie die Funktion DATUM() auch schon benutzt, um Kalender aufzubauen und dabei im Parameter Monat Werte zwischen 1 und 12 und im Parameter Tag Werte zwischen 1 und 31 eingesetzt.
Interessant ist diese Funktion aber vor allem dann, wenn die Parameter für Monat und Tag per Formel variabel gestaltet werden können, etwa mit den Funktionen ZEILE() oder SPALTE().
Und hier zeigt sich dann die große Flexibilität der Formel. Anders, als man vielleicht annehmen würde, ist der Monat-Parameter nicht auf 1 bis 12, der Tagesparameter nicht auf 1 bis 31 beschränkt. Hier ein paar Beispiele:
|
|
|
|
Auch rückwärts rechnet die Funktion logisch:
|
|
|
|
6. Siehe auch
-
Die Wochentagsnummer ist abhängig vom zweiten Parameter der Funktion WOCHENTAG(). Im obigen Beispiel ist dieser Parameter auf 2 gesetzt, was bedeutet, dass die Zählung am Montag bei 1 beginnt. Lässt man diesen Parameter leer oder setzt ihn auf 1, so beginnt die Zählung am Sonntag mit 1. (1)
-
Die Funktion WOCHENTAG() kann mit der Zählung je nach Wunsch am Sonntag oder Montag beginnen. In den Beispielen dieser Seite benutzen wir die Standardeinstellung, die mit der Zählung am Sonntag beginnt. Die Verwendungsmöglichkeiten der Funktionsparameter sind im Online-Hilfetext (F1) aufgeführt. (2)
-
Wenn die Formel kopiert werden soll, unbedingt auf die richtige Verwendung der absoluten und relativen Adressen achten. (3)
-
In AOO ab Version 3.4 liefert die Funktion ZEIT() einen Wert zwischen 00:00:00 und 23:59:59.999 (zuvor lieferte die Funktion auch Werte von größer oder gleich 24:00:00.0). Die folgenden Beispiele sind deshalb nicht gültig für AOO. (4)

Datum/d1.gif)
Datum/d2.gif)
Datum/d3.gif)
Datum/d4.gif)
Datum/d5.gif)
Datum/d6.gif)