Seite 1 von 1

Mit Datediff das Lebensalter berechnen

Verfasst: Mi, 06.01.2016 11:23
von Helmut M.
Hallo,

ich habe aus Excel eine Datei in OOcalc importiert. Nun wird mir das berechnete Alter nicht mehr angezeigt.

Die Excelformel lautet:
=WENN(E1="";"";datedif(E1;$G$1;"Y"))
wobei in E1 das Geburtsdatum und in G1 ein Wahldatum stehen.

Funktionieren könnte
=(JAHRE(E1;DATWERT("2016.12.31");1))
wobei ich nicht das absolute Datum sondern den Zellenbezug benötige.

Wäre schön wenn mir jemand helfen könnte.

Vielen Dank!!

Re: Mit Datediff das Lebensalter berechnen

Verfasst: Mi, 06.01.2016 11:51
von nikki
Hallo,
steht eigentlich in der Programmhilfe:

JAHRE
Bestimmt die Jahresdifferenz zweier Daten.
Syntax
JAHRE(Anfangsdatum; Enddatum; Typ)
Anfangsdatum ist das erste Datum
Enddatum ist das zweite Datum
Typ berechnet den Differenztyp. Mögliche Werte sind 0 (Intervall) und 1 (in Kalenderjahren).


Beispiele:

Code: Alles auswählen

=(JAHRE(A1;$G$1;0))
Liefert das korrekte Datum zum Zeitpunkt des Enddatum.

Re: Mit Datediff das Lebensalter berechnen

Verfasst: Mi, 06.01.2016 12:32
von Stephan
hier ist eine, von mir geschriebene, benutzerdefinierte Funktion die DATEDIF() von MS Excel in OO Calc ersetzt:

Code: Alles auswählen

Function Datedif(Anfangsdatum, Enddatum, par)

	If VarType(Anfangsdatum) = 8 Then 'String
		Anfangdatum = DateValue(Anfangsdatum)
	End If
	If VarType(Enddatum) = 8 Then
		Enddatum = DateValue(Enddatum)
	End If
	 
	startdatum_jahr = YEAR(Anfangsdatum)
	startdatum_monat = Month(Anfangsdatum)
	startdatum_tag = Day(Anfangsdatum)
	enddatum_tag = Day(Enddatum)
	enddatum_monat = Month(Enddatum)
	
	Select Case par
		Case "D", "d"
			Datedif = DateDiff("d", Anfangsdatum, Enddatum)
			
		Case "Y", "y"
			 Datedif = DateDiff("yyyy", Anfangsdatum, Enddatum) - 1
			 
		Case "M", "m"
			Datedif = DateDiff("m", Anfangsdatum, Enddatum) - 1
			
		Case "YD", "yd"
			'Jahre ignorieren:
			tmp = enddatum_tag & "." & enddatum_monat & "." & startdatum_jahr
			tmp2 = enddatum_tag & "." & enddatum_monat & "." & (startdatum_jahr + 1)
			'relative Datumslage vergleichen
			If DateDiff("d", Anfangsdatum, DateValue(tmp)) < 0 Then
					Datedif = DateDiff("d", Anfangsdatum, DateValue(tmp2))
				Else
					Datedif = DateDiff("d", Anfangsdatum, DateValue(tmp)) 
			End If
			
		Case "MD", "md"
			tmp = enddatum_tag & "." & startdatum_monat & "." & startdatum_jahr
			tmp2 = enddatum_tag & "." & (startdatum_monat + 1) & "." & startdatum_jahr
			If DateDiff("d", Anfangsdatum, DateValue(tmp)) < 0 Then
					Datedif = DateDiff("d", Anfangsdatum, DateValue(tmp2)) + 1
				Else
					Datedif = DateDiff("d", Anfangsdatum, DateValue(tmp)) 
			End If
		Case "YM", "ym"
			Datedif = (DateDiff("m", Anfangsdatum, Enddatum) - 1) - 12*(DateDiff("yyyy", Anfangsdatum, Enddatum) - 1)
			
		Case Else
			Datedif = "Falscher Parameter"

	End Select
	
End Function
Gruß
Stephan

Re: Mit Datediff das Lebensalter berechnen

Verfasst: Mi, 06.01.2016 14:28
von Helmut M.
Vielen Dank Euch beiden für die Lösungen.
Ich habe mich für die einfachere Variante von Nikki entschieden. Funktioniert topp.

Viele Grüße
Helmut