1904年て何? - 「1904年から計算する」(Microsoft Excel) 

まさに、まめ知識ですが、今日、Microsoft Excel(表計算ソフト)を使っていて気が付いたので、メモしておきます。

「ツール」→「オプション」→ 「計算方法」のタブ

を見ると、ブックオプションに、「1904年から計算する」というチェックボックスがあり、なんだろうと思い調べてみました。


要するに、これはMac版のExcelとの、ファイルの互換性のためらしい。
すなわち、データファイルの中で日付をデータ化するときに、

 ・ Mac版のExcelでは 1904年
 ・ Windows版のExcelでは 1900年

の1月1日を基点(1日目)として計算するとのこと(デフォルトで)。(以下、それぞれ、1904年システム、1900年システムと呼ぶ。)

例えば、2011年8月10日は、

 ・ 1900年システムでは、「40765」
 ・ 1904年システムでは、「39303」

という数値でデータ化されています。


参考
マイクロソフト サポート オンライン
Wikipedia「Micorsoft Excel」


なんで、こんなややこしいことになってるかというと、歴史的には、Mac版のExcelが先にあり、そのときに、1904年システムだったのが、Windows版では、先行していた「ロータス1-2-3」(懐かし!)という別の表計算ソフトとのデータ互換性を優先させたために、1900年システムにしてしまったという事情があるそうです。



ここで、いくつかの疑問が・・・

疑問1
なぜ、Mac版のExcelでは、1904年を基点とするシステムを採用したのか?
やたら半端ではないか?

元を正せば、これは閏年の例外に原因があります。

初期のMac(Macintoshコンピュータ)では、1904年1月1日より前の日付がサポートされていなかったためだそうで、Macがそのようになっていた理由は、閏年(うるうどし)に、次のような例外があるためだそうです。

すなわち、現行のグレゴリオ暦での閏年は、

1. 西暦年が4で割り切れる年は閏年
2. ただし、西暦年が100で割り切れる年は平年
3. ただし、西暦年が400で割り切れる年は閏年

ですが(Wikipedia)、1900年は、ちょうど上記2に相当する例外で、Macは、これを簡単に避けるために、1904年を基点としたようです。

これは、上記、マイクロソウトHP(マイクロソフト サポート オンライン)の次の記述によります。

Microsoft Excel for the Macintosh は、デフォルトでは 1904 年から計算する日付システムを使用します。初期の Macintosh コンピュータの設計が理由で、1904 年 1 月 1 日より前の日付はサポートされていません。この設計は、1900 年がうるう年ではなかったという事実に関連する問題の発生を避けることを目的としたものでした。1900 年から計算する日付システムに切り替えると、Microsoft Excel for the Macintosh でも 1900 年 1 月 1 日などの初期の日付がサポートされます。

・・・なので、Mac版のエクセルが自分で好き好んで1904年システムを採用したというわけではないようです。



疑問2
では、「ロータス1-2-3」では、なぜに1900年を採用していたのか?

上記、記事(Wikipedia「Micorsoft Excel」)には、ミスだったと書いてあります。

この問題は、発売当初、大きな市場を持っていた表計算ソフト「Lotus 1-2-3」との互換性を満たすために、「1-2-3」が行う日付計算処理のミスがExcelへ取り込まれたことによるものである。

これが事実なら、ミスと知っていながら、商売を優先で取り込むとは、さすがマイクロソフトです(笑)

本当かどうか、手持ちのExcel 2000(古っ!)で実験してみました。(下図参照。)

ちょっと面白いのは、1900年2月28日と入力して、ドラッグしてオートフィルしてみると、グレゴリオ暦では存在しないはずの1900年2月29日が次のセルに入ってしまうことです。
また、数値データとして何が入ってるかを見ると、1900年2月28日は59(これは良い)で、その次の1900年2月29日には60が入っています。正しくは、この数値は3月1日のはずなのに。。。ほんとにミスを取り込んでいるようです。。

もちろん、閏年でない年、例えば、2011年ではちゃんと、2月28日の次には、3月1日となり、数値データも、それぞれ、40602、40603と連続しています。

閏年の1904年2月28日の次には、正しく2月29日が入り、数値データも連続して、1520、1521となっています。

ではでは、400で割り切れる2000年ではどうでしょうか。オートフィルしてみると、2月28日の次には、正しく2月29日が入ります。

ではでは、2100年ではどうか・・・。

ジャジャーン! 2月28日の次は、正しく3月1日となりました!

さすがに、百年後まではミスを引きずらないということですね。しかし、数値データとしては、1ずれているので、1900年2月28日以前からの差分を取ると、1日余分になってしまいます。そんな用途はあまりなさそうだけど・・・。

ちなみに、1899年12月31日とタイプしても、文字列として認識されるだけで、数値データ化はされないし、日付の表示の形式をセルの書式で変えようとしても変えれません。


20110810_01_MSExcell1904a.jpg



疑問3
マイクロソフトなのに、なぜに、Mac版のほうが最初?

ますますマニアックな疑問になってきましたが。。。

当時、マイクロソフトのOSにはなく、Macにはあった、GUI(Graphic User Interface、要するにマウスでクリックして云々というインターフェース)での利用に対応し、使いやすさで、先行のロータス1-2-3に追いつくため、というのが、その答えのようです。

むしろ、Windowsの完成には、その経験が生かされたとのこと。



余談・・・

エクセルの編集で、ファイルの全体から、ある文字列を含むセルの内容を削除したいとします。。
そして、複数のワークシートを選択して、その文字列を検索したとします。
それで、『あっ見つかった』と思って、そのまま、そのセルを削除すると、見えてないものも含めて、選択した全てのワークシートの同じ位置のセルの内容が削除されてしまいます。

これって、うっかりするとえらいことになります。






コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://daydiamond.blog45.fc2.com/tb.php/3037-95b127b3