セルに入力された日付の年が、閏年であるかを判定する数式を紹介します。
後半では、閏年の仕組みや由来について解説します。
閏年の条件
閏年の条件は次のとおりです。
- 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年8月時点の、今後10回と過去3回の閏年は次のとおりです。
過去3回の閏年を開く/閉じる
- 2024年
- 2020年
- 2016年
今後10回の閏年を開く/閉じる
- 2028年
- 2032年
- 2036年
- 2040年
- 2044年
- 2048年
- 2052年
- 2056年
- 2060年
- 2064年
【コラム】閏年とは?
閏年はなぜ必要?
閏年が必要な理由は、季節が一巡する期間である「1太陽年」が、ちょうど365日ではないからです。
1太陽年は約365日5時間49分、つまり約365.2422日です。
カレンダーを毎年365日にすると、毎年約6時間ずつ実際の季節とずれていき、約4年でほぼ1日のずれになります。
そこで、約4年に1度、1日を追加して調整するのが閏年です。
なぜ100年・400年の条件があるのか
単純に4年ごとに1日追加すると、1年の平均は次のようになります。
365日+1日÷4年=365.25日
しかし、1太陽年は約365.2422日なので、少し追加しすぎです。
その誤差を修正するため、現在のグレゴリオ暦では次のルールになっています。
- 4で割り切れる年は閏年
- 4で割り切れても、100で割り切れる年は平年
- 400で割り切れる年は必ず閏年
例えば、2000年は400で割り切れるため閏年です。一方、2100年は100で割り切れますが400では割り切れないため、平年となります。
このルールによる1年の平均は365.2425日となり、1太陽年にかなり近くなります。
閏年の由来
古代ローマでは、暦と季節のずれを調整するため、不定期に日や月を追加していました。
ユリウス・カエサルは紀元前46年に暦を改革し、原則として4年ごとに1日を追加するユリウス暦を紀元前45年から導入しました。
しかし、ユリウス暦でも少しずつ誤差が蓄積したため、1582年にローマ教皇グレゴリウス13世が暦を修正しました。これが現在広く使われているグレゴリオ暦です。
なぜ2月に1日追加するのか
古代ローマでは、現在の3月を年の始まりとする暦が使われていた時期があり、2月は年末にあたる月でした。
2月に日数を調整していた名残から、現在も閏年には2月29日が追加されます。
まとめると、閏年は、カレンダーの日付と季節のずれを抑えるために、1日を追加した年です。