いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)FILTER関数で日付や期間を条件にする

 GoogleスプレッドシートのFILTER関数で、日付を条件として抽出する方法についてです。

  • FILTER関数の条件にDATEVALUE関数を用いることで、日付を条件とした抽出ができます。
  • DATEVAULE関数の代わりに「*1」で済ませる方法もあります。
  • 第3引数以降(AND条件)を用いて、一定期間内の日付を抽出することができます。

手順

 B,C列に氏名と生年月日のデータが記録されています。
 そこでE3セルにFILTER関数を使った式を入力し、生年月日が2018/7/1以降である者のデータを抽出しています。

 E3セル

=FILTER(B3:C8,C3:C8>=DATEVALUE("2018/7/1"))

 第2引数を単純に「C3:C8>=2018/7/1」とやってしまうと「2018/7/1」の部分が単なる割り算(≒288.3)とみなされてしまい、うまくいきません。
 そこで「2018/7/1」の部分を「"」とDATEVALUE関数で囲み「DATEVALUE("2018/7/1")」とすることでシリアル値に変換し、抽出条件としています。
 「"」で囲むのを忘れないよう注意が必要です。
 

 なお、DATEVALUE関数の代わりに「*1」とすることで済ませることもできます。

 E3セル

=FILTER(B3:C8,C3:C8>="2018/7/1"*1)

 ここでも「"」で囲むのを忘れないよう注意が必要です(DATEVALUE関数の場合と異なり、忘れてもエラーになりません)。


 なお、基準となる日付がセルに入力されている場合は、関数等を併用することなくそのまま比較に用いることができます。

 TODAY関数と比較する場合も同様です。例えば「今日以降」という場合の条件(第2引数)は「~>=TODAY()」で済みます。

 

 また、スプレッドシートのFILTER関数では、第3引数以降にAND条件を追加することができます。
 ここではこれを利用して、生年月日が2018/7/1から2018/9/30までの期間に含まれる者のデータを抽出しています。

 E3セル

=FILTER(B3:C8,C3:C8>="2018/7/1"*1,C3:C8<="2018/9/30"*1)