littlepete
Well-known Member
- Joined
- Mar 26, 2015
- Messages
- 507
- Office Version
- 365
- Platform
- Windows
Dit is geen vraag, maar een oplossing voor wie er naar zoekt:
een UDF die verbeterd de functie datumverschil uitvoert:
wie de periode tussen twee datums wil omschrijven met jaren, maanden en dagen,
zonder dat er 0 jaar of 0 maanden of 0 dagen tussen zit, kan deze formule gebruiken ...
Perfect invoegbaar in een zin wegens geen leestekens :
het eindresultaat zou kunnen zijn :
* 23 jaar, 7 maanden en 13 dagen
* 11 maand
* 1 maand en 3 dagen
* 20 dagen
een UDF die verbeterd de functie datumverschil uitvoert:
wie de periode tussen twee datums wil omschrijven met jaren, maanden en dagen,
zonder dat er 0 jaar of 0 maanden of 0 dagen tussen zit, kan deze formule gebruiken ...
Perfect invoegbaar in een zin wegens geen leestekens :
het eindresultaat zou kunnen zijn :
* 23 jaar, 7 maanden en 13 dagen
* 11 maand
* 1 maand en 3 dagen
* 20 dagen
VBA Code:
Function vx(eerste, tweede) ' ===== verschil in jaren, maanden en dagen tussen twee datums
'
maanden = DateDiff("m", eerste, tweede) + (Day(eerste) > Day(tweede))
d = CInt(tweede - WorksheetFunction.EDate(eerste, maanden))
'
Select Case Int(maanden / 12)
'
' = meer jaren
'
Case Is > 1
Select Case maanden Mod 12
Case Is > 1
Select Case d
Case Is > 1: vx = Int(maanden / 12) & " jaar, " & maanden Mod 12 & " maanden en " & d & " dagen"
Case Is = 1: vx = Int(maanden / 12) & " jaar, " & maanden Mod 12 & " maanden en " & d & " dag"
Case Is = 0: vx = Int(maanden / 12) & " jaar en " & maanden Mod 12 & " maanden"
End Select
Case Is = 1
Select Case d
Case Is > 1: vx = Int(maanden / 12) & " jaar, " & " één maand en " & d & " dagen"
Case Is = 1: vx = Int(maanden / 12) & " jaar, " & " één maand en " & d & " dag"
Case Is = 0: vx = Int(maanden / 12) & " jaar en één maand"
End Select
Case Is = 0
Select Case d
Case Is > 1: vx = Int(maanden / 12) & " jaar en " & d & " dagen"
Case Is = 1: vx = Int(maanden / 12) & " jaar en één dag"
Case Is = 0: vx = Int(maanden / 12) & " jaar"
End Select
End Select
'
' = één jaar
'
Case Is = 1
Select Case maanden Mod 12
Case Is > 1 ' meer maanden
Select Case d
Case Is > 1: vx = " één jaar, " & maanden Mod 12 & " maanden en " & d & " dagen"
Case Is = 1: vx = " één jaar, " & maanden Mod 12 & " maanden en één dag"
Case Is = 0: vx = " één jaar en " & maanden Mod 12 & " maanden"
End Select
Case Is = 1
Select Case d
Case Is > 1: vx = " één jaar, één maand en " & d & " dagen"
Case Is = 1: vx = " één jaar, één maand en één dag"
Case Is = 0: vx = " één jaar en één maand"
End Select
Case Is = 0
Select Case d
Case Is > 1: vx = " één jaar en " & d & " dagen"
Case Is = 1: vx = " één jaar en één dag"
Case Is = 0: vx = " één jaar"
End Select
End Select
'
' = minder dan één jaar
'
Case Is < 1
Select Case maanden Mod 12
Case Is > 1
Select Case d
Case Is > 1: vx = maanden Mod 12 & " maanden en " & d & " dagen"
Case Is = 1: vx = maanden Mod 12 & " maanden en " & d & " dag"
Case Is = 0: vx = maanden Mod 12 & " maanden"
End Select
Case Is = 1
Select Case d
Case Is > 1: vx = " één maand en " & d & " dagen"
Case Is = 1: vx = " één maand en één dag"
Case Is = 0: vx = " één maand"
End Select
Case Is = 0
Select Case d
Case Is > 1: vx = d & " dagen"
Case Is = 1: vx = " één dag"
Case Is = 0: vx = "foutje misschien?"
End Select
End Select
End Select
End Function