いきなり答える備忘録

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

(Gスプレッドシート)2つの日付から日数を求める

 Googleスプレッドシートで、2つの日付からその間の日数を求める方法についていくつか示します。
 何もヒネリはありませんがDAYS関数のはたらきがちょっと意外かもしれません。

  • 2つの日付から日数を求める方法としてはDAYS関数を用いる方法、DATEDIF関数を用いる方法、引き算を用いる方法があります。

手順

2つの日付が何日差なのかを求める場合

f:id:accs2014:20200923002730p:plain:right:w500

 B3セルとC3セルに2つの日付が入力されており、この2つの日付の差を求めるものとします。

 やり方はいろいろ考えられますが、例としてC6:C8に次の3つの式を入力してみます。

 C6~C8セル

=DAYS(C3,B3)
=DATEDIF(B3,C3,"D")
=C3-B3

 DAYS関数はExcelでも比較的新しい関数なので馴染みが薄いかもしれません。次のDATEDIF関数と異なり引数は2つだけで済むものの、新しい日付,古い日付の順で指定するというところが注意点です。
 DATEDIF関数は満年齢計算などでよく用いられる関数です。2つの日付(旧,新の順)のほか、第3引数として「"D"」と指定することで日付の差を求めることができます。
 「C3-B3」は2つの日付の正体がシリアル値(数値)であることを利用した引き算です。単純かつ最もわかりやすい方法です。
 

f:id:accs2014:20200923002733p:plain:right:w500

 確定すると結果はいずれも「9」となります。

 ところでDAYS関数は名前から考えれば「10」を返してもよさそうな気がしますが、このようにDATEDIF関数と同じく2つの日付の差を返します。

 

f:id:accs2014:20200923002737p:plain:right:w500

 ちなみに上記の式の中の2つの日付を入れ替えてみると……

 

f:id:accs2014:20200923002742p:plain:right:w500

 結果はこうなります。
 DAYS関数と引き算は「-9」を返すものの、DATEDIF関数だけがエラーを返します。

 DAYS関数がエラーにならないのは一見よさそうですが、引数の前後を間違えた場合にもそのまま計算されてしまうためかえって厄介かもしれません。

2つの日付を含むすべての日数を求める場合

f:id:accs2014:20200923002745p:plain:right:w500

 ここでもB3セルとC3セルに2つの日付が入力されています。この2つの日付を含む期間中のすべての日数を求めるものとします。

 例としてC6:C8に次の3つの式を入力してみます。

 C6~C8セル

=DAYS(C3,B3)+1
=DATEDIF(B3,C3,"D")+1
=C3-B3+1

 全く単純で、上記の例で示した3種の式に、いずれも1を足しただけです。
 

f:id:accs2014:20200923002751p:plain:right:w500

 確定すると結果はこうなります。
 身も蓋もありませんが、やはり引き算利用が一番使いやすい感じがします。