Excelの落とし穴

1900年は閏年?

パソコンの事情
閏年決定のルール
1900年は閏年ではないのに、Excelでは 2月29日が存在!!

Excelの閏年の誤差とは?

パソコンの事情

過去のデータの取り扱いを継承するために、生じる落とし穴もあります。
コンピュータが普及し始めたころは、今のように処理速度や記憶容量が十分ではありませんでした。

そんな中コンピュータを使用していくためには、環境を制限していかなければなりませんでした。
コンピュータが普及した現在でも、その環境を引き継いでいかなければならならないことがあります。
それは、閏年の誤差にあります。

データの処理速度を優先するために、2000年以前ではコンピュータで日付を表す際、年は二けたで扱われていました。
当時は、1900年の「00」~1999年の「99」の間で計算できたため二ケタの数値で十分でした。

そういう事情もあり、4年に1度という条件でのみで閏年は判定されていました。
CPUの能力やメモリの容量を考えると仕方のないことだったのかもしれません。
コンピュータの進化や2000年問題の対策から、年を4桁で表す様になりました。

閏年決定のルール

本来グレゴリウス暦では、閏年の判定はそんな簡単ではありません。(細部は「閏年」のページを参照してください)

閏年を決めるルールは、以下の通りです。
1  閏年    西暦年が4で割り切れる年は閏年
2  閏年の例外 西暦年が100で割り切れる場合は、閏年としない
    1900年、2100年は、100で割り切れるので閏年ではありません。
    (2000年は更に例外です。「3 閏年の例外の例外」を参照)
3  閏年の例外の例外
    上記2であっても西暦年が400で割り切れる場合は閏年となります。
  単純に、1、2の条件で考えると
    1,900年、2000年、2100年・・・は閏年ではないはずですが、2000年は400で割り切れるため閏年でした。
    将来的には、2400年、2800年がその例外の例外に当たります。

1900年は閏年ではないのに、Excelでは 2月29日が存在!!

1900年は閏年ではなく、2000年は閏年でした。
ちなみに、単純に閏年は4年に1度のルールで考えるならば、
グレゴリウス暦では2000年は閏年なので、年を2桁で扱っていた時代と一致するため問題にはなりません。
しかし、グレゴリウス暦では1900年は閏年ではありません。単純に4年に1度のルールとは一致しません。
どちらで統一するかと考えた場合、過去の資産を変更するより1900年を閏年として扱うのが影響は小さいと思われます。
そんなことから、4桁で年を表す様になった現在でも、1900年は閏年として扱われています。
したがって、グレゴリウス暦では1900/2/29は存在しないにも関わらずExcel上では存在するのです。

1900/3/1以降の曜日には問題ないのですが、1900/2/28以前の曜日にはずれがあることを理解しておく必要があります。
1900年の日付を扱う頻度を考えると、 大半の場合は問題にはならないはずです。
起算日が1900/2/28以前の場合の日数計算や、それ以前の曜日を取り扱う場合には誤差があることを認識しておく必要があります。

ページトップへ