Home » Excel(エクセル)の関数・数式の使い方 » 日付・時間 » 存在しないはずの1900年2月29日が存在する

存在しないはずの1900年2月29日が存在する

対象:Excel97, Excel2000, Excel2002, Excel2003

計算で使用できる最も古い日付」という記事をご紹介しましたが、Excelで古い日付を計算に使う可能性がある場合に、知っておくべきことがあります。

Excelでは、本当は存在しないはずの、1900年2月29日が存在する、ということです。

[スポンサード リンク]

グレゴリオ暦では、
 4で割り切れる年は閏年
 でも、100で割り切れる年は閏年にはしない
 でも、でも、400で割り切れる年はやっぱり閏年にする
というルールになっています。

このルールに従えば、1900は、4でも100でも割り切れるけれど、400では割り切れないので、1900年2月29日は現実には存在しません。

けれどもExcelでは1900年2月29日は存在しています。

Excelで「1900/2/29」と入力すれば、シリアル値「60」の日付と認識してくれます。

ですから、、Excelでは、1900年3月1日より前の日と、それ以降の日とで計算をすると1日ずれが生じてしまいます。頻繁にあることではないとは思いますが、1900年3月1日より前の日を計算に使う場合、注意が必要です。

ちなみに、何故こんなことになっているかについてですが、Microsoftの[XL2002] WEEKDAY関数で1900年3月1日より前の正しい曜日が返らない(KB106339)という文書には、以下のような記述があります。

Excel の日付システムは、他の表計算ソフトとの互換性を完全に満たすように定義されています。

しかしながら、この日付システムにおいて、1900 年は事実に反して閏 (うるう) 年として解釈されています。

他の表計算ソフトとの互換性を満たすために、Excelの日付関連の仕様を設計したんだけど、これによってないはずの1900年2月29日が存在することになってしまった、ということです。

他の表計算ソフトとなどと表現されていますが、まあ、Lotus 1-2-3でしょう。

当時の表計算ソフトの覇者・Lotus 1-2-3からシェアを奪い取るために、仕様として変な部分も取り込んでいったということなのでしょう。

Home » Excel(エクセル)の関数・数式の使い方 » 日付・時間 » 存在しないはずの1900年2月29日が存在する

[スポンサード リンク]
[スポンサード リンク]

TrackBack:5

TrackBack URL
日付データ、Accessの場合 from インストラクターのネタ帳
Access 97,2000,2002,2003 Excelでは日付の基点が実在しない1900年1月0日であること、実在しない1900年2月29日が存在することをご紹介しました。 Officeファミリーの一員、Accessではどうなっているのか気になるところです。...
指定した月の日数を計算−DAY関数・DATE関数 from インストラクターのネタ帳
対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007 「指定した月の日数を計算するにはどうしたらいいです...
月末までの日数を取得する関数は?−DATE・YEAR・MONTH関数 from インストラクターのネタ帳
対象:Excel2002, Excel2003, Excel2007 「エクセル 月末までの日数 関数」 といった検索が行われていることがあります。 ...
Googleスプレッドシートの日付のシリアル値 from インストラクターのネタ帳
対象:Googleスプレッドシート Excelで日付というのは、1900年1月1日を「1」を基準として、1日経過するごとに1加算される数値・シリアル値で...
日付をYYYYMMDD文字列に変換するユーザー定義関数 from インストラクターのネタ帳
Excel(エクセル)で、日付データを、YYYYMMDD形式の文字列に変換するユーザー定義関数・Functionプロシージャをご紹介しています。

Home » Excel(エクセル)の関数・数式の使い方 » 日付・時間 » 存在しないはずの1900年2月29日が存在する

「日付・時間」の記事一覧

検索

最近じっくりと読まれている記事

Google Maps:Older →
.