Zur Berechnung von Zeitabständen bezogen auf ein Datum, stellt VBA eine spezielle Funktion zur Verfügung. Diese möchte ich hier etwas näher beschreiben.
Die Formel kann zum Beispiel so aussehen: Cells(1, 1) = DateDiff("YYYY", "26.03.1987", "28.02.2003").
Als Ergebnis würde in der Zelle A1 die Differenz zwischen den beiden Datumsangaben in vollen Jahren ausgegeben. Die "Überhängenden" Tage, die kein volles Jahr ergeben, finden keine Berücksichtigung. Das gilt auch für die anderen Einstellungen dieser Funktion, außer Tage, Minuten und Sekunden.
An Stelle der Einstellung "YYYY" für Jahre, sind auch folgende Angaben zulässig:
Einstellung | Art der Ausgabe | Bemerkung |
yyyy | Jahr | Anzahl der Kalenderjahre |
q | Quartale | Anzahl der Quartale |
m | Monate | Anzahl der Monate |
y | Tag des Jahres | Anzahl der Tage |
d | Tage | Anzahl der Tage |
w | Wochentag | Anzahl der Wochentage zwischen den Terminen. Fällt der erste Termin zum Beispiel auf einen Montag, werden alle Montage zwischen den Terminen gezählt. Wobei der erste Montag (Starttermin) nicht berücksichtigt wird. |
ww | Wochen | Anzahl der Kalenderwochen |
h | Stunden | Anzahl der Stunden zwischen den Terminen. |
n | Minuten | Anzahl der Minuten zwischen den Terminen. |
s | Sekunden | Anzahl der Sekunden zwischen den Terminen. |
Weiterhin ist es möglich, an Stelle des Datums im "Klartext", eine Variable zu verwenden. Das könnte dann so aussehen: Cells(1, 1) = DateDiff("YYYY", Cells(1, 3), Now). Dabei verweist der Cells-Befehl auf eine Zelle des Tabellenblatts (C1), Now steht für den aktuellen Tag.
Wenn der zweite Datumswert vor dem ersten liegt, werden negative Werte ausgegeben (z. B. -16 für Jahre).