「計算で使用できる最も古い日付」という記事をご紹介しましたが、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)という文書には、以下のような記述があります。
しかしながら、この日付システムにおいて、1900 年は事実に反して閏 (うるう) 年として解釈されています。
他の表計算ソフトとの互換性を満たすために、Excelの日付関連の仕様を設計したんだけど、これによってないはずの1900年2月29日が存在することになってしまった、ということです。
他の表計算ソフトとなどと表現されていますが、まあ、Lotus 1-2-3でしょう。
当時の表計算ソフトの覇者・Lotus 1-2-3からシェアを奪い取るために、仕様として変な部分も取り込んでいったということなのでしょう。
Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » 存在しないはずの1900年2月29日が存在する
- Newer:文字のロールオーバー−文字色の変更
- Older:Google Maps
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プロシージャをご紹介しています。