24. september 2009 - 11:39
Der er
4 kommentarer og
1 løsning
Beregne andtal år, måneder og dage mellem flere datoer
Hej
jeg har et spørgsmål vedr. beregning af datointervaller.
Jeg har flere forskellige datointervaller og har brug for at finde ud af hvor mange år, måneder og dage der er imellem.
fx.
1. Periode 24-05-1972 31-08-1975
2. Periode 09-08-1976 16-09-1976
3. Periode 11-05-1977 31-03-1979
4. Periode 06-10-1997 31-12-1998
5. Periode 08-02-1999 07-05-1999
Jeg har brug for en total af alle perioder, der viser hvor mange hele år, måneder og dage. Der skal også tages højde for skudår og der må ikke regnes med et gennemsnit af dage i en måned.
er der nogen der kan hjælpe mig med at beregne dette?
24. september 2009 - 12:07
#1
Jeg er ikke helt med. I den første er der er umiddelbart 3 hele år, 3 hele måneder og 7 hele dage.
I den anden er der 1 hel måned og 7 hele dage.
I periode 3 er der 1 helt år, 10 hele måneder og 20 hele dage.
I periode 4 fire er der 1 helt år, 2 hele måneder og 25 hele dage.
I periode 5 er der: 2 hele måneder og 29 dage.
Hvis vi så skal til at lægge sammen så er der 5 hele år, 18 hele måneder og 88 hele dage. Hvordan mener du at de 88 dage skal omregnes til måneder og hvordan skal månederne omregnes til hele år?
Altaså kort sagt, hvilket resultat, forventer du at en formel skal give?
24. september 2009 - 12:13
#2
Ønsker du det bare beregnet for hver af perioderne, kan du bruge denne metode:
Med dine datoer i B2 til B6 og C2 til C6, kan du indsætte formler til beregning af år, måneder og dage i D2, E,2 og F2.
I D2 skal stå: =DATO.FORSKEL($B2;$C2;"y")
I E2 skal stå: =DATO.FORSKEL($B2;$C2;"ym")
I F2 skal stå: =DATO.FORSKEL($B2;$C2;"md")
Kopier formlerne nedad. Så har du de tal du ønsker for hver periode.
06. november 2019 - 17:13
#5
Hej jesper_munk
Det er godt nok over 10 år siden du skrev spørgsmålet og du har nok fundet en løsning. Alligevel vil jeg angive hvordan jeg løste problemet (andre kan måske bruge det) i en VBA funktion. Funktionen udnytter Windows regler for skudår og finder FORSKELLEN i År, Måneder og Dage mellem 2 datoer. Da det er FORSKELLEN er rækkefølgen af Stat-Slut datoerne uden betydning i Funktionen. Her er Funktionen:
Function JIS_DiffDate(Date1, Date2 As Range, Optional Opt = 0, Optional Txt = True) As Variant
'
' Find differencen mellem 2 datoer - År, Mdr, Dage
' Opt =0: Returnerer År, Mdr, Dage
' Opt =1: Returnerer År
' Opt =2: Returnerer Mdr
' Opt =3: Returnerer Dage
' Txt: Hvis Opt=0: Vis tekst År, Mdr, Dg SAND/FALSK
'
Application.Volatile True
Dim D, Da1, Da2 As Date
AY = 0: AM = 0: AD = 0
If Date1 <> "" And Date2 <> "" Then
Da1 = Date1: Da2 = Date2
If Date1 > Date2 Then
Da1 = Date2: Da2 = Date1
End If
AY = Year(Da2) - Year(Da1): AYx = AY
If Month(Da2) < Month(Da1) Then
AY = AY - 1
ElseIf Month(Da2) = Month(Da1) Then
If Day(Da2) < Day(Da1) Then AY = AY - 1
End If
If AY <> AYx Then
If Day(Da2) < Day(Da1) Then
D = DateSerial(Year(Da2) + 1, Month(Da1), Day(Da1))
AM = 12 - Month(D) + Month(Da2) - 1
D = DateSerial(Year(Da2), Month(Da2) - 1, Day(Da1))
Else
D = DateSerial(Year(Da2) + 1, Month(Da1) - 1, Day(Da1))
AM = 12 - Month(D) + Month(Da2) - 1
D = DateSerial(Year(Da2), Month(Da2), Day(Da1))
End If
Else
If Day(Da2) >= Day(Da1) Then
D = DateSerial(Year(Da2), Month(Da1), Day(Da1))
AM = Month(Da2) - Month(D)
D = DateSerial(Year(Da2), Month(Da2), Day(Da1))
Else
D = DateSerial(Year(Da2), Month(Da1) + 1, Day(Da1))
AM = Month(Da2) - Month(D)
D = DateSerial(Year(Da2), Month(Da2) - 1, Day(Da1))
End If
End If
AD = DateDiff("d", D, Da2, vbMonday)
Else
JIS_DiffDate = ""
Beep
Exit Function
End If
If Opt = 0 Then
JIS_DiffDate = Format(AY, "##0 ") + "År, " + Format(AM, "#0 ") + "Mdr, " + Format(AD, "#0 ") + "Dg"
If Txt = False Then JIS_DiffDate = Format(AY, "##0 ") + ", " + Format(AM, "#0 ") + ", " + Format(AD, "#0 ")
ElseIf Opt = 1 Then
JIS_DiffDate = AY
ElseIf Opt = 2 Then
JIS_DiffDate = AM
ElseIf Opt = 3 Then
JIS_DiffDate = AD
Else
JIS_DiffDate = "#Værdi"
End If
End Function