エクセル関数の日付の互換性

エクセル関数では、実在しない日付の「1900年2月29日」を日付として認識してしまうという作りになっています。
これは何故かというとグレゴリオ暦の日付の理論として「4で割り切れる年を閏年とするが、100で割り切れる場合は閏年としない、でも400で割り切れる年は閏年とする」という理論になっています。

この理論上でいくと1900年は閏年にはなりません。従って「1900年2月29日」という日は存在しないことになります。しかし、Excel上では「1900年2月29日」という日付はシリアル値「60」の値として認識してしまうのです。ということになると「1900年3月1日」以前とそれ以降の日で1日ずれが出てくるということになります。

まぁ1900年なんて古い日付を計算することなんてめったに無いとは思いますが、もし計算する場合には注意するようにしてください。

何故こういうことになるかというと、WEEKDAY関数をExcelで使用すると「1900年3月1日」以前の曜日が正しく認識されないという結果になってしまうという理由に、Excelの日付に関する関数や機能は他の表計算ソフトと互換性が取れているらしいのですが、1900年に関してだけは閏年として解釈するような機能になっているようです。

多分、Excelが出始めた当時、Lotus 1-2-3からシェアを奪い取りたかったExcelが急いで互換性を満たしたところ変なところで間違いを犯しちゃったといったところでしょうか?


Posted by KozueGenius