mal keine Frage, sondern was ich schon lange gesucht und jetzt gefunden habe: Wie kann man mehrere UDF-Teilergebnisse in mehreren Zellen ausgeben:
Die Function:
Function DATUMDIFF(d1, d2) As Variant ' Bei Bedarf Argumente tauschen If d1 > d2 Then ' Jahre berechnen If DateSerial(Year(d2), Month(d1), Day(d1)) > d2 _ ' Monate berechnen ' Tage berechnen If Day(d2) >= Day(d1) Then ' Matrix mit Ergebnissen vorbereiten
Code eingefügt mit Syntaxhighlighter 1.13
Option Explicit
Dim YearDiff As Integer
Dim MonthDiff As Integer
Dim DayDiff As Integer
Dim temp As Date
temp = d1
d1 = d2
d2 = temp
End If
YearDiff = Year(d2) - Year(d1)
Then YearDiff = YearDiff - 1
If Month(d2) > Month(d1) Then
If Day(d2) >= Day(d1) Then
MonthDiff = Month(d2) - Month(d1)
Else
MonthDiff = Month(d2) - Month(d1) - 1
End If
Else
If Day(d2) >= Day(d1) Then
MonthDiff = Month(d2) - Month(d1) + 12
If MonthDiff = 12 Then MonthDiff = 0
Else
MonthDiff = Month(d2) - Month(d1) + 11
End If
End If
DayDiff = Day(d2) - Day(d1)
Else
DayDiff = Day(DateSerial(Year(d1), _
Month(d1) + 1, 1) - 1) - Day(d1) + Day(d2)
End If
DATUMDIFF = Array(YearDiff, MonthDiff, DayDiff)
End Function
Nachdem Sie sie in ein Excel-Modul eingegeben haben, steht Ihnen die Funktion "DatumDiff" sowohl in Tabellen als auch in VBA-Prozeduren zur Verfügung. Sie übergeben einfach die beiden Tage, deren Differenz berechnet werden soll und erhalten als Ergebnis eine Matrix mit der Anzahl der Jahre, Monate und Tage. Beachten Sie dabei, dass "DatumDiff" als Matrixformel eingegeben werden muss:
- Markieren Sie drei nebeneinander liegende Zellen.
- Geben Sie die gewünschte Formel ein. Zum Beispiel:
=DateDiff(A1;A2)