2003のヘルプからの抜粋をご紹介しました。この中で「計算で使用できる最も古い日付」が「1900年1月1日」となっているが、「1899年12月31日」ではないかとご指摘をいただきました。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」を日付つきの表示形式にしてみてください。17:00」といった日付が見えて来ます。9時00分」なのです。1-2-3のユーザーを奪い取る使命があったことなどが関係しているのかなと勝手に想像しています。真剣に探せばどこかに信頼のおける文書があるとは思うのですが、全体最適を目指すためにちょっと仕様を汚すことは、少なからずあることですからこの程度の推測で納得しておきたいと思います。OpenOfficeの方は過去のしがらみにとらわれることなく、シリアル値「1」=「1900年1月1日」の前日なんだから、「0」を「1900-Jan-0」という実在しない日にはしないで「1899-Dec-31」とすなおに扱っているだろうなと想像しています。「計算で使用できる最も古い日付」というネタをご紹介しましたが、Excelで古い日付を計算に使う可能性がある場合に、知っておくべきことがあります。Excelでは存在しないはずの1900年2月29日が存在するということです。Excelでは日付の基点が実在しない1900年1月0日であること、実在しない1900年2月29日が存在することをご紹介しました。Officeファミリーの一員、Accessではどうなっているのか気になるところです。セルの幅よりも長い数値が入力されている場合に、「####」といった表示になってしまうケースと対処方法をご紹介しました。一つこれとは違う原因で「####」表示になるケースがあります。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。