Mit Datediff das Lebensalter berechnen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Helmut M.
Beiträge: 5
Registriert: Di, 27.05.2014 09:49

Mit Datediff das Lebensalter berechnen

Beitrag 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!!
nikki
******
Beiträge: 787
Registriert: Do, 05.03.2015 10:42

Re: Mit Datediff das Lebensalter berechnen

Beitrag 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.
Gruß

---------------------------------------------------------
Win.10 Prof. 64-bit, AOO 4.1.7, LO 6.3.4 (x64)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Mit Datediff das Lebensalter berechnen

Beitrag 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
Helmut M.
Beiträge: 5
Registriert: Di, 27.05.2014 09:49

Re: Mit Datediff das Lebensalter berechnen

Beitrag 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
Gesperrt