Feststellen, ob ein Jahr ein Schaltjahr ist (Microsoft Excel)
Bob fragt sich, ob es eine einfache Möglichkeit gibt, festzustellen, ob das Jahr eines bestimmten Datums ein Schaltjahr ist, um die Zinsen und die Anzahl der Aufzinsungstage zu berechnen.
Wir alle wissen, dass wenn ein Jahr durch 4 teilbar ist, es ein Schaltjahr ist, oder? Nun, eigentlich ist das falsch. Sie können also nicht einfach eine Jahreszahl wie im Folgenden durch 4 teilen, um festzustellen, ob es sich um ein Schaltjahr handelt:
=IF(MOD(YEAR(A1), 4) = 0, "Leap", "Regular")
Die Formel funktioniert für alle Daten innerhalb dieses Jahrhunderts (Jahre 2000 bis 2099), aber außerhalb dieses Bereichs funktioniert sie nicht zuverlässig. Der Grund ist, dass „teilbar durch 4“ nicht der einzige Test für ein Schaltjahr ist. Wenn das Jahr ein Jahrhundertjahr ist (teilbar durch 100), dann ist es nur dann ein Schaltjahr, wenn es durch 400 teilbar ist. Das Jahr 2000 ist also ein Schaltjahr, das Jahr 2100 jedoch nicht.
Wenn Sie auf kugelsichere Weise feststellen möchten, ob ein Datum innerhalb eines Schaltjahres liegt, muss Ihre Formel komplexer sein:
=IF(OR(AND(MOD(YEAR(A1),4)=0,MOD(YEAR(A1),100)>0), MOD(YEAR(A1),400)=0),"Leap","Regular")
Beachten Sie, dass dies eine einzelne Formel ist. Es wird hier in zwei Zeilen angezeigt, sodass es vollständig auf den Bildschirm passt. Die Formel testet alle drei Bedingungen, die erforderlich sind, um festzustellen, ob ein Datum innerhalb eines Schaltjahres liegt.
Ein anderer Ansatz besteht natürlich darin, einfach herauszufinden, ob ein bestimmtes Jahr einen 29. Februar enthält. Es gibt eine beliebige Anzahl von Formeln, die zur Ausführung dieser Aufgabe verwendet werden können:
=IF(DAY(EOMONTH("1Jan"&YEAR(A1),1))=29, "Leap", "Regular") =IF(MONTH(DATE(YEAR(A1),2,29))=2, "Leap", "Regular") =IF(DAY(DATE(YEAR(A1),2,29))=29, "Leap", "Regular") =IF(DAY(DATE(YEAR(A1),3,0))=29, "Leap", "Regular")
Alle bisher beschriebenen Methoden funktionieren mit einer Ausnahme für jedes von Excel unterstützte Datum. Diejenigen, die die DATE-Funktion verwenden (die letzten drei oben gezeigten), funktionieren nicht, wenn das Datum in Zelle A1 im Jahr 1900 liegt. Diese geben immer zurück, dass 1900 ein Schaltjahr ist, obwohl dies nicht der Fall ist. (Interessanterweise weist die EOMONTH-Funktion in dieser Hinsicht nicht das gleiche Problem auf wie die DATE-Funktion.)
Wenn Sie mit Daten arbeiten müssen, die vor den von Excel unterstützten Daten liegen (vor dem 1. Januar 1900), müssen Sie direkt mit Jahren arbeiten, anstatt das Jahr aus einem Excel-Datum zu ziehen. Die Variation der Drei-Test-Formel funktioniert einwandfrei, wenn Zelle A1 nur ein Jahr enthält:
=IF(OR(AND(MOD(A1,4)=0,MOD(A1,100)>0),MOD(A1,400)=0),"Leap","Regular")
Sie können auch eine benutzerdefinierte Funktion erstellen, mit der das Datum getestet wird.
Dieser Ansatz funktioniert einwandfrei, unabhängig davon, ob die Zelle einen Datumswert oder einen Textwert für ein Datum enthält. (Wenn Sie einen nicht unterstützten Datumswert in eine Zelle eingeben, z. B. 1/1/1896, behandelt Excel den Eintrag als Textwert, anstatt zu versuchen, ihn als Datum zu analysieren.) Das folgende Beispiel funktioniert ordnungsgemäß mit allen von unterstützten Datumsangaben VBA, die im Bereich des Jahres 100 bis zum Jahr 9999 liegt:
Function IsLeap1(c As Range) As Boolean YearNo = Year(c.Value) If YearNo Mod 100 = 0 Then IsLeap1 = ((YearNo \ 100) Mod 4 = 0) Else IsLeap1 = (YearNo Mod 4 = 0) End If End Function
Um die Funktion in Ihrem Arbeitsblatt zu verwenden, geben Sie eine Formel wie die folgende ein:
=IF(IsLeap1(A1),"Leap", "Regular")
Das folgende einzeilige Makro verwendet den Trick, um herauszufinden, ob es in dem betreffenden Jahr einen 29. Februar gibt:
Function IsLeap2(c As Range) IsLeap2 = IsDate("2/29/" & Year(c.Value)) End Function
Auf das Makro wird in Ihrem Arbeitsblatt genauso verwiesen wie auf das vorherige Makro:
=IF(IsLeap2(A1),"Leap", "Regular")
Wenn Sie kreativere Methoden benötigen, um festzustellen, ob ein Datum in einem Schaltjahr liegt, lesen Sie diesen Artikel:
http://chandoo.org/wp/2012/02/29/check-leap-year-using-excel/
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (9978) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.