•  
  •  

Excel und die „dark function“

Neben dem bekannten Internet existiert noch ein sogenanntes „darknet“. Etwas Ähnliches können Sie im Kleinen auch in Excel erleben: die „dark funtcion“.

Für die Berechnung von Datumsdifferenzen gibt es die „geheime“ Funktion DATEDIF. Aber warum geheim?

Differenzen zwischen zwei Daten

Nachdem ich Sie in den letzten beiden Wochen schon mit Datumsdifferenzen genervt habe, kommt hier nun ein Höhepunkt: Es handelt sich um die Funktion DATEDIF. Das Gemeine an dieser Funktion ist nun nicht, daß sie einen englischen Namen hat, sondern daß man sie nicht findet, wenn man sie nicht kennt (daher „dark function“).

Wenn man nämlich im Formel-Assistenten (Menüband „FORMELN“, Bereich „Funktionsbibliothek“ Befehl „Funktion einfügen“) unter „Kategorie auswählen“ die Option „Alle“ auswählt, taucht dieser Befehl nicht auf. Sie müssen, um diese Funktion zu verwenden, den Funktionsnamen mit einem „=“ direkt eintippen.

Für diese Funktion sind folgende Argumente relevant:

  • Ausgangsdatum: ist das erste Datum des betrachteten Zeitraums.
  • Enddatum: ist das letzte Datum des betrachteten Zeitraums.
  • Einheit: Hierzu sehen Sie in der folgenden Liste, welche Werte Sie eingeben können und welche Information die Funktion berechnen soll.

170207_datedif_1

Das Argument „Einheit“ wird mit Abkürzungen von englischen Ausdrücken befüllt (year – month – day) und zwar als Text, daher die Anführungsstriche, die ebenfalls eingegeben werden müssen.

Wie Sie unten am Bsp. 2 („y“) sehen können ist die Aussage „vollständige“ Jahre durchaus ernst gemeint. Denn hier fehlt für das zweite Jahr noch ein Tag und damit ist es nicht vollständig.

Aus Bsp. 3 und 4 wird deutlich, daß dies auch für die Monate („m“) gilt.

Mit der Einheit „d“ können Sie die Tage ermitteln, die zwischen dem Ausgangs- und dem Enddatum liegen (Bsp. 5). Wie bereits erwähnt (Blog Excel und „die Enterprise“), sind Daten eigentlich mit Datumsformat dargestellte Zahlen, so daß man mit ihnen problemlos rechnen kann. Daher können Sie anstelle der DATEDIF-Funktion auch die beiden Datumswerte einfach voneinander abziehen (Bsp. 5a).

In Bsp. 6 und 7 habe ich die Funktion DATEDIF mit der Einheit „md“ dargestellt. Hier wird alles unbeachtet gelassen, was nicht Tag ist. D.h. es wird ledigleich der Tag des Ausgangsdatums vom Tag des Enddatums abgezogen. Wenn letzterer kleiner ist, wie in Bsp. 7, dann wird quasi „in den nächsten Monat hineingerechnet“. Dabei geht die Funktion davon aus, daß jeder Monat immer 30 Tage hat. (Ansonsten wäre das Ergebnis von Bsp. 7: 21).

Bei „ym“ werden die Tage und Jahre ignoriert und lediglich die zwischen den beiden Daten liegenden Monate ermittelt. Auch hier geht es wieder um „vollständige“ Monate: Bei Bsp. 9 fehlt noch ein Tag um den 5. Monat zu erreichen (wie in Bsp. 10).

Für die Berechnung der zwischen zwei Daten liegenden Tage – ohne Beachtung der Jahreszahlen – benötigt man die Einheit „yd“. In diesem Fall werden die Monate wieder mit der korrekten Anzahl von Tagen angesetzt.

170207_datedif_2

 Wozu das ganze?

Wenn Sie sich nun – zu Recht – fragen, wozu diese etwas abstruse Herumrechnerei mit Tagen, Monate und Jahren und ignorierten Tagen, Monaten und Jahren dienen soll, dann hier ein Praxisbeispiel:

Sie möchten genau ausrechnen, wie alt jemand ist. Und zwar in Jahren, Monaten und Tagen.

Damit wir ein konkretes Beispiel zum Rechnen haben, verrate ich Ihnen hier mein Geburtsdatum: 19.11.1966.

Die Differenz aus End- und Ausgangsdatum liefert lediglich die Anzahl der Tage (Versuch 1). Diese Zahl geteilt durch 365 ergibt einen Näherungswert von 50,25 Jahren (Versuch 2). Dieser Wert sagt nun für die meisten von uns relativ wenig aus, zumal hier ja auch die Existenz von Schaltjahren einfach ignoriert wird.

Mit der Funktion JAHR() kann man natürlich die zwischen dem aktuellen Jahr und dem Geburtsjahr liegenden Jahre ermitteln (Versuch 3a). Aber wenn das aktuelle Datum noch vor dem Geburtstag im aktuellen Jahr liegt, dann liefert die Berechnung der Jahre einen um 1 zu hohen Wert. Und niemand möchte künstlich um ein Jahr älter gerechnet werden.

Außerdem kommt dann bei den Monaten etwas Negatives raus (Versuch 3b). Einen ähnlichen Effekt kann man bei den Tagen sehen, wenn die aktuelle „Tageszahl“ vor der des Geburtstags liegt (Versuch 3c).

Beim Versuch 4 habe ich die Berechnung der Jahre, Monate und Tage in Abhängigkeit von den negativen Werten gestaltet. Die Berechnung scheint auch zu funktionieren. Allerdings würde ich mit diesen Formeln an einem Tag (vom 28.02. bis zum 01.03) um ganze vier Tage älter werden (Exkurs). Das möchte ich nun auf gar keinen Fall, auch wenn es nur rechnerisch wäre. Da ich aber auch die Formel für die Berechnung der Tage nicht noch komplexer machen möchte, komme ich gleich zur einfachsten Lösung:

Verwendet man die DATEDIF-Funktion, kann man die drei Werte korrekt ermitteln (Versuch 5). Und auch beim Monatswechsel würde diese Formel korrekt weiterrechnen.

170207_datedif_3

Das Ergebnis: Ich bin heute 50 Jahre, 2 Monate und 19 Tage alt.

Warnung

Anscheinend ist die Funktion DATEDIF nur in der dargestellten, einfachen Form stabil. In komplexeren Verwendungen, z.B. beim „Verschachteln“ der Funktion mit anderen Funktion (siehe Blog Excel und „Die Matroschka“ (WENN-Funktion Teil 2)), scheint sie Fehler zu produzieren und ist daher mit Vorsicht zu genießen. Dies ist wohl auch der Grund, warum sie so geheim gehalten wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*