Microsoft Excel

Das Portal zum Thema Excel-Formeln

Gruppe: Datum/Zeit

Beitrag: Ermittlung von Datumsdifferenzen mit DATEDIF

Aufgabe
Es soll die Differenz von 2 Datumswerten in Jahren, Monaten und Tagen ausgegeben werden.

Dies geht mit der in der Online-Hilfe undokumentierten Funktion DATEDIF

       A               B               C       
1 09.06.72  Parameter  Differenz  
2 24.12.01  "D"  10790  
3   "M"  354  
4   "Y"  29  
5   "YD"  198  
6   "YM"  6  
7   "MD"  15  
8 Alter: 29 Jahre 6 Monate 15 Tage 

Lösung
in A1 steht das Ausgangsdatum; - in A2 das Enddatum.
Bis auf Teil-Tage (Parameter "MD") kann man hierfür die undokumentierte Funktion DATEDIF verwenden.

Differenz in Tagen: =DATEDIF(A$1;A$2;"D")
Differenz in Monaten: =DATEDIF(A$1;A$2;"M")
Differenz in Jahren: =DATEDIF(A$1;A$2;"Y")
Differenz in Tagen im selben Jahr: =DATEDIF(A$1;A$2;"YD")
Differenz in Monaten im selben Jahr: =DATEDIF(A$1;A$2;"YM")
Differenz in Tagen im selben Jahr/Monat: =DATEDIF(A$1;A$2;"MD")

Die letzte Formel rechnet oft falsch, da ein Monat immer mit 31 Tagen angesetzt wird.
stattdessen:
=TAG(A2)-TAG(A1)+(TAG(A1)>TAG(A2))*TAG(DATUM(JAHR(A1);MONAT(A1)+1;))

Definitionsfrage: was ist ein kompletter Monat? (13.07.2013)
Bei 05.06.2013 bis 23.07.2013 sagt DATEDIF(A1;A2;"M") eins. Das ist weder ein ganzer Juni noch ein ganzer Juli - also null. Andererseits ist bei DATEDIF der 01.07.2013 bis 31.07.2013 null. Bei Beginndatum (morning) bis Endedatum (evening) wäre das eins. Dann:
=MAX(0;DATEDIF(A1;A2;"M")-(TAG(A2)>=TAG(A1))+(MONAT(A1)<>MONAT(A1-1))+(MONAT(A2)<>MONAT(A2+1)))
ohne DATEDIF (Josef B):
=MAX(0;(JAHR(A2+1)-JAHR(A1-1))*12+MONAT(A2+1)-MONAT(A1-1)-1)

Auf Anregung von Hajo Jahre+Monate+Tage zusammengefaßt - für's aktuelle Alter:
Geburtsdatum in A1 / in A2 =HEUTE()
="Alter: "&DATEDIF(A1;A2;"y")&" Jahr"&WENN(DATEDIF(A1;A2;"y")<>1;"e";"")&", "&DATEDIF(A1;A2;"ym")& " Monat"&WENN(DATEDIF(A1;A2;"ym")<>1;"e";"")&", "&TAG(A2)-TAG(A1)+(TAG(A1)>TAG(A2))*TAG(DATUM(JAHR(A1);MONAT(A1)+1;))&" Tag"&WENN(TAG(A2)-TAG(A1)+(TAG(A1)>TAG(A2))*TAG(DATUM(JAHR(A1);MONAT(A1)+1;))<>1;"e";"")