いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)日時計算の起点は1899/12/30 0:00:00

 Googleスプレッドシートでの日時の扱いについてです。日時計算の起点がExcelとは異なる設定となっています。

  • シリアル値「0」に対応する日時は1899年12月30日0時0分0秒であり、これが日時計算の起点です。
  • Excelの場合(1900年1月0日0時0分0秒)と異なるため注意が必要です。

手順

f:id:accs2014:20200613092459p:plain:right:w450

 適当なセルに「0:00:00」と入力してみます。
 これは午前0時ジャストを表していますが内部的にはシリアル値、つまりは数値の0として扱われています。よって単に「0」と入力しても、この後の結果は同じものとなります。

 このセルを選んだ状態でメニューから「表示形式」→「数字」→「日時」と選択します。

f:id:accs2014:20200613092503p:plain:right:w700

 

f:id:accs2014:20200613092508p:plain:right:w450

 すると「1899/12/30 0:00:00」と表示されました。
 シリアル値0に対応する日時、つまり日付や時間の計算の起点はこの日時ということになります。

f:id:accs2014:20200613092511p:plain:right:w450

 さて、ここで「1899/12/30 25:00:00」と入力してみます。
 入力を確定すると……

f:id:accs2014:20200613092515p:plain:right:w450

 「1899/12/31 1:00:00」に改められます。もちろん単に「25:00:00」と入力した場合もこの日時とみなされます。

 ここが注意点です。
 Excelの場合は日時計算の起点が「1900/1/0 0:00:00」なので「25:00:00」と入力すると「1900/1/1 1:00:00」とみなされます。これは(年と月を気にしなければ)「1日と1時間」とみることができるため、日時計算のうえで大変都合がよい設定です。
 しかしGoogleスプレッドシートの場合は「31日と1時間」ということになってしまいます。例えばこの状態でどこかのセルに「=DAY(B2)」と入力すると「31」と返ってきますし、時間換算しようとして「=24*DAY(B2)+HOUR(B2)」と入力すると「745」(=24*31+1)という値が返ってきてしまいます(Excelだと「25」(=24*1+1)が得られます)。