セルに入力された日付の年が、閏年であるかを判定する数式を紹介します。
閏年が必要な理由についても簡単に解説します。
閏年とは?
閏年とは、2月が29日まである年のことです。
季節が一巡する周期(1太陽年)は約365.2422日で、ちょうど365日ではありません。
そのため、原則として4年に1度、2月に1日を追加して、カレンダーの日付と季節のずれを調整しています。
ただし、4年ごとに1日追加するだけでは調整しすぎるため、100年・400年の例外ルールが設けられています。
閏年の条件
閏年の条件は次のとおりです。
- 4で割り切れる年は、原則として閏年
- 4で割り切れても、100で割り切れる年は平年
- 400で割り切れる年は必ず閏年
閏年を判定する数式
入力した日付の年が4・100・400で割り切れるかを数式で直接確認すると、数式が長くなります。
そこで、2月末が29日になるかどうかを確認する方法がおすすめです。
【おすすめ】DATE・YEAR・DAY関数で確認する
セルA1に入力された日付の年が閏年なら「TRUE」、平年なら「FALSE」を返します。
=DAY(DATE(YEAR(A1),3,0))=29
なお、上の数式では閏年でない西暦1900年が閏年であると判定されます。
Excelの1900日付システムでは、互換性を保つために1900年を閏年として扱う仕様があるためです。
1900年を含めて正確に判定する場合は、次の数式か、後述のMOD関数を使った数式を使用してください。
=AND(DAY(DATE(YEAR(A1),3,0))=29, YEAR(A1)<>1900)
補足:DATE関数について
DATE関数は、「=DATE(年,月,日)」の形式で指定し、年月日を表す日付を返す関数です。
第3引数の「日」に「0」を指定すると、指定した月の前月末の日付が返されます。
そのため、「=DATE(年,3,0)」とすると、指定した年の2月末の日付を求めることができます。
2月末が2月29日であれば閏年、2月28日であれば平年と判定できます。
閏年の条件をそれぞれ確認する
やや複雑になりますが、閏年の条件をそれぞれ確認する数式です。
=OR(MOD(YEAR(A1),400)=0, AND(MOD(YEAR(A1),4)=0, MOD(YEAR(A1),100)<>0))
LET関数を使用できる環境なら次のように整理できます。
この数式では、YEAR関数で取り出した西暦を「y」という名前で定義し、以降の計算で使用しています。
=LET(y,YEAR(A1), OR(MOD(y,400)=0, AND(MOD(y,4)=0, MOD(y,100)<>0)))
過去・今後の閏年
2026年10月時点の、今後10回と過去3回の閏年は次のとおりです。
過去3回の閏年を開く/閉じる
- 2024年
- 2020年
- 2016年
今後10回の閏年を開く/閉じる
- 2028年
- 2032年
- 2036年
- 2040年
- 2044年
- 2048年
- 2052年
- 2056年
- 2060年
- 2064年
まとめ
Excelでは、DATE・YEAR・DAY関数を組み合わせることで、閏年かどうかを簡単に判定できます。
セルA1に日付が入力されている場合は、次の数式を使用します。
閏年なら「TRUE」、平年なら「FALSE」が返されます。
=DAY(DATE(YEAR(A1),3,0))=29
ただし、Excelでは実際には平年の1900年を閏年として扱う仕様があるため、1900年も正確に判定したい場合は、本文で紹介した1900年対応の数式やMOD関数を使用してください。
