Translate

Dienstag, 11. November 2014

Exaktes Alter anhand von einem Geburtsdatum ausrechnen (Access/Excel)


Wie ist es möglich die exakte Anzahl von Jahren zwischen 2 Datumsangaben zu errechnen?

Eine Datumsangabe entspricht eine Zahl.
Tag 1 ist der 01.01.1900. Ab da an wird jeder Tag durchgezählt, somit entspricht der 01.02.1900 der 32. Tag, daher ist der Wert von diesem Datum der Wert 32.

Die Berechnung 12.02.2014 - 16.08.1974 ergibt den Wert 14425

Warum? Weil tatsächlich folgendes berechnet wird:
41682 - 27257 = 14425

Was bedeutet nun der Wert 14425?
Es handelt sich um die Anzahl der Tage die zwischen den 2 Datumsangaben liegen.

Und wie viel Jahre liegen nun dazwischen?
Eine Möglichkeit ist, den Wert durch die Anzahl der Tag im Jahr zu teilen, also:
14425 / 365 = 39,52

Unsere Person mit Geburtsdatum 16.08.1974 ist also am 12.02.2014 ca. 39 und halb Jahre alt. Am 01.09.2014 ist die Person 40 Jahre alt, bzw. über 40 Jahre alt.

Leider ist die Teilung durch 365 etwas ungenau, da nicht jedes Jahr 365 Tage hat. 

Eine häufig angewandte Lösung ist das subtrahieren der Jahreswerte:
Jahr(01.09.2014) - Jahr(16.08.1974) = 40
Am 01.09.2014 ist die Person also 40 Jahre alt.

Die gleiche Berechnung vor dem 16.08.1974 ergibt auch 40:
Jahr(01.05.2014) - Jahr(16.08.1974) = 40
Jedoch ist die Person am 01.05.2014 nicht 40, sondern 39 Jahre alt.
Manche Menschen sind dann sehr beleidigt ;-)

Also das subtrahieren der Jahreswerte errechnet nicht das tatsächliche Alter in Jahren, sondern das Alter welches die Person in einem gewissen Jahr wird oder bereits geworden ist.

Um das exakte Alter in Jahren auszurechnen, müssten wir ggf. den Wert 1 von unserer Berechnung abziehen, sollte der Geburtstagstag der Person im aktuellen noch nicht erreicht sein. Dies könnte wiederum mit einer Wenn-Funktion realisiert werden.

Aber warum kompliziert, wenn es doch einfach und effizient geht:

Jahr(12.02.2014 - 16.08.1974)-1900 = 39

Jahr(01.09.2014 - 16.08.1974)-1900 = 40

Dieser Rechnenweg ist allgemein gültig und kann somit sowohl in Excel, Access, Word usw. eingesetzt werden.


Alter in Jahren in einer Access-Abfrage berechnen:
SELECT Year(Date-[GebDatum])-1900 AS [AlterExakt] FROM ...
Dabei ist zu beachten, das das Feld [GebDatum] ein Datumsfeld ist und das Geburtsdatum der Person enthält.

Alter in Jahren mit Excel berechnen:
=Jahr(Heute()-A1)-1900
Dabei ist zu beachten, das in Zelle A1 das Geburtsdatum steht und die Formel-Zelle mit dem  Zahlenformat "Standard" (bzw. kein Datumsformat) formatiert ist.

Übrigens, in Excel findet man oft die Lösung mit der Funktion DATEDIF
DATEDIF(16.08.1974;12.02.2014;"y") liefert tatsächlich 39 und DATEDIF(16.08.1974;01.09.2014;"y") den Wert 40.

Es funktioniert, der Hacken an dieser Funktion ist, das sie undokumentiert ist und somit ist nicht sichergestellt ob diese auch noch in zukünftigen Excel-Version noch existiert.

Also warum auf eine „unsicher“ Funktion zurückgreifen, wenn es dafür einen einfachen Lösungsweg gibt?!

Keine Kommentare:

Kommentar veröffentlichen