Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » 計算で使用できる最も古い日付−1900年1月0日

計算で使用できる最も古い日付−1900年1月0日

対象:Excel97,Excel2000,Excel2002,Excel2003

Excelの仕様についてのネタで、Excel 2003のヘルプからの抜粋をご紹介しました。

この中で「計算で使用できる最も古い日付」が「1900年1月1日」となっているが、「1899年12月31日」ではないかとご指摘をいただきました。

その根拠は、OpenOfficeの「Microsoft Excel File Format」というドキュメントに、「0 = Base date is 1899-Dec-31」という記述があるためのようです。

[スポンサードリンク]

実際のところは試してみればすぐわかります。

Excelを起動して
A1セルに「1900/1/1」
B1セルに「1899/12/31」
と入力してみてください。

次にそれぞれのセルを参照して計算をさせてみましょう。
A2セルに「=A1+1」
B2セルに「=B1+1」
と入力してみてください。

「1900/1/1」を使ったA2セルは計算が行われ「1900/1/2」と表示されますが、「1899/12/31」を使ったB2セルでは計算はできず#VALUE!エラーが発生します。

また、A1セルとB1セルでシリアル値を表示させてみてください。

A1セルは「1900/1/1」のシリアル値「1」が表示されますが、B1セルは「1899/12/31」という文字列のままです。

以上の操作から、「計算で使用できる最も古い日付」が「1899年12月31日」ということはありません。「1899/12/31」では計算できないわけですから。

じゃあ「1900年1月1日」が「計算で使用できる最も古い日付」なのかというと、実はこれも違います、厳密なことを言えば。


先ほどのつづきでA3セルに「=A1-1」と入力して計算をさせてみてください。
「0」と表示されるはずです。

次にA3セルの表示形式を日付にしてみましょう。
「1900/1/0」と表示されます。

一般的にシリアル値については「1900年1月1日」を「1」、「1900年1月2日」を「2」として以後日にちが増えるごとに「1」加算されるといった説明がされていますが、厳密なスタートは「0」でExcelはそれを「1900年1月0日」という変な日付で扱っているのです。

Excelのヘルプ作成者に確認するしかないのでしょうが、「1900年1月0日」というのは「日付」という考えからすると確かに変なので、「計算で使用できる最も古い日付」としては「1900年1月1日」として記載してあるのかな、と推測しています。


ところで、この日付として変な「1900年1月0日」ですが、実は意識せずに使っていることは少なくありません。

例えば勤怠管理をするために出社時刻と退社時刻を入力して、何時間何分働いたかを引き算で計算するということはよく行われています。その際入社時刻に「9:00」退社時刻に「17:00」といった入力をするわけですが、この「9:00」「17:00」を日付つきの表示形式にしてみてください。「1900/1/0 9:00」「1900/1/0 17:00」といった日付が見えて来ます。

つまり勤務時間を計算する「17時00分」引く「9時00分」は、実際には「1900年1月0日 17時00分」引く「1900年1月0日 9時00分」なのです。


Excelでシリアル値「0」を、なぜ「1899年12月31日」にせず「1900年1月0日」としたのかは、Excelの設計者に確認しないとわかりませんが、
・昔は現在ほどPCのリソースが豊富ではなかったこと
・そもそもExcelがMacintosh上で動く表計算ソフトだったこと
・Lotus 1-2-3のユーザーを奪い取る使命があったこと
などが関係しているのかなと勝手に想像しています。真剣に探せばどこかに信頼のおける文書があるとは思うのですが、全体最適を目指すためにちょっと仕様を汚すことは、少なからずあることですからこの程度の推測で納得しておきたいと思います。

OpenOfficeの方は過去のしがらみにとらわれることなく、シリアル値「1」=「1900年1月1日」の前日なんだから、「0」を「1900-Jan-0」という実在しない日にはしないで「1899-Dec-31」とすなおに扱っているだろうなと想像しています。

[スポンサードリンク]

Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » 計算で使用できる最も古い日付−1900年1月0日

TrackBack:6

TrackBack URL
存在しないはずの1900年2月29日が存在する from インストラクターのネタ帳
対象:Excel 97,2000,2002,2003 「計算で使用できる最も古い日付」というネタをご紹介しましたが、Excelで古い日付を計算に使う可能性がある場合に、知っておくべきことがあります。 Excelでは存在しないはずの1900年2月29日が存在するということです。...
日付データ、Accessの場合 from インストラクターのネタ帳
Access 97,2000,2002,2003 Excelでは日付の基点が実在しない1900年1月0日であること、実在しない1900年2月29日が存在することをご紹介しました。 Officeファミリーの一員、Accessではどうなっているのか気になるところです。...
「####」エラーが表示された−日付・時刻書式でマイナス値 from インストラクターのネタ帳
対象:Excel 97,2000,2002,2003 セルの幅よりも長い数値が入力されている場合に、「####」といった表示になってしまうケースと対処方法をご紹介しました。 もう一つこれとは違う原因で「####」表示になるケースがあります。 日付や時刻の書式設定が行われているセルにマ...
西暦・和暦の対応表・早見表を作成する from インストラクターのネタ帳
対象:Excel97,Excel2000,Excel2002,Excel2003 DATEVALUE関数を使って西暦を和暦に変換する方法、言語設定によっ...
日数計算をする−引き算 from インストラクターのネタ帳
対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007 日数・日付関連の計算について、何度かご紹介していま...
シリアル値を日付に変換したい from インストラクターのネタ帳
対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007 「シリアル値を日付に変換したいのですが・・・?」 ...

Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » 計算で使用できる最も古い日付−1900年1月0日

「日付計算」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.