スプレッドシートとExcelのシリアル値の挙動が少し違う件

どうでもいい小ネタなのですが、日付を管理している『シリアル値』について、Googleスプレッドシートとエクセルは、いくつかの違いがあります。

  • シリアル値が『0』の日付が異なる。
  • 本来無いはずの『1900年2月29日』の存在
  • マイナスのシリアル値の取り扱い

おそらく、普通は影響を与えないのですが、なんかしらの条件下でエラーとなる可能性があるので、頭の片隅の片隅の片隅くらいに留めておきたいです。

記事を書いた人

こんにちは。当ブログの管理人の『くろん』です。
30代サラリーマン、新規事業推進室に所属。新卒ブラック企業努め時代に身に着けた業務効率化ノウハウをアウトプットしていきます。
読んでくれた方の業務が一秒でも早く終わりますようにの精神で記事書いてます!!

スポンサーリンク
目次

Googleスプレッドシートとエクセルの挙動の違い

エクセルとスプレッドシートのシリアル値の挙動がこちらになります。注目してほしいところを色づけしておきました。

シリアル値『0』の日付の違い

シリアル値が『0』の日付は、エクセルが『1990年1月0日』なのに対して、Googleスプレッドシートでは『1899年12月30日』となっています。

こうなってしまった背景としては、エクセルの開発社であるマイクロソフトから公式説明がでているので、こちらを確認してください。Excel では、1900 年が閏年であると誤って想定されています

簡単にまとめると、Excelの開発当初、すでにあった表計算ソフトウェア『Lotus 1-2-3』と互換性を高めるために同じシリアル日付システムを使用したけど、そもそもそれが1900年が閏年であるという間違っているシステムであった。
これを修正することもできるけど、日付に関わる部分なので、プログラムの修正が大変面倒となり混乱を招くため、敢えてそのままにしてる。

Googleスプレッドシート側は、後発の表計算ソフトなので、この問題に対処することができ、本来ないはずの『1990年2月29日』が表示できてしまうのは、ダサいと考えたのでしょう。
ですが、現代のシリアル値がExcelとGoogleスプレッドシートで『1』異なってしまうと多大な混乱を招くし、使いづらいので、シリアル値『0』の開始日を1日前倒すことで解決を図ろうとしたのでしょう。

本来無いはずの『1900年2月29日』の存在

上の話と被ってしまうのですが、Excelには『1900年2月29日』がシリアル値『60』として存在しているのに対し、Googleスプレッドシートにはこの日付は存在しません。

そのため、1900年3月1日以降はシリアル値が一緒なのですが、それ以前には異なる状況となっています。

マイナスのシリアル値の取り扱い

Excelはマイナスのシリアル値は日付にできないのに対し、Googleスプレッドシートではマイナスであってもシリアル値として認識し、日付を返してくれます。
そのため、かなりの過去であってもGoogleスプレッドシートは、日付の計算等の処理が行うことができるという利点が生まれます。

まとめ

GoogleスプレッドシートとExcelでは、シリアル値の取り扱いで、下記の点で挙動の違いがあります。

  • シリアル値が『0』の日付が異なる。エクセル:『1990年1月0日』、スプレッドシート:『1899年12月30日』
  • Excelには本来無いはずの『1900年2月29日』が存在する
  • Googleスプレッドシートでは、マイナスのシリアル値を取り扱うことができる

ほとんどの状況では影響は与えない話ですが、影響を与えることもあるやもしれないので、覚えておきましょう。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次