QUERY関数のwhere句に日付を指定する方法【スプレッドシート】
本記事では、スプレッドシートのQUERY関数で条件を日付指定にする方法を解説していきます。
QUERY関数の基本的な使い方を知りたい方はこちらの記事からご覧ください。
QUERY関数のwhereに日付を指定する方法
それではQUERY関数の条件を日付指定にする方法をご紹介していきます。
今回サンプルとして使うデータは以下のようなものです。
このデータから、B列の日付が「2022/08/13」のものだけ抽出したいと思います。
日付を直接指定する
条件の日付を直接指定するという基本的なやり方です。
関数
=QUERY(B3:H13,”where B = date ‘2022-08-13′”)
出力結果
解説
where句の条件で日付を指定する場合は「date 日付」と入力します。
where 列 = date 日付
指定する日付は文字列形式で、年・月・日を半角ハイフンで繋ぐようにしましょう。
date ‘08/13’
date ‘2022/08/13’
また、文字列の場合はシングルクォーテーションで囲む必要があるためそちらも忘れないよう注意してください。
セル参照で指定する
続いて日付の部分をセル参照にする方法です。
関数
=QUERY(B3:H13,”where B = date ‘”&TEXT(B15,”yyy-mm-dd”)&”‘”)
出力結果
解説
少し複雑ですが手順をみながら解説していきます。
=QUERY(B3:H13,”where B = date ‘2022-08-13′”)
まずは日付を直接指定した時と同じように入力してみます。
=QUERY(B3:H13,”where B = date ‘2022-08-13’“)
↓
=QUERY(B3:H13,”where B = date TEXT(B15,”yyyy-mm-dd”)“)
TEXT関数は数値をテキスト形式に変更する関数です。
第一引数に変更したい値が入っているセル番号(今回でいう参照するセル番号)を指定します。
=QUERY(B3:H13,”where B = date ‘“&TEXT(B15,”yyyy-mm-dd”)&”’“)
TEXT関数の内側から「&」「””」「’’」の順番です。
これでセル参照で日付を条件に指定することができました。
QUERY関数で日付を条件にする場合はセル参照にすることが多いので、ぜひ使い方を覚えておいてください。
そのほかの便利な日付指定の方法
上記では日付に一致した行を抽出しましたが、ほかにも便利な使い方があります。
今回は仕事でもよく使うタスク管理を例にいくつかご紹介します。
以下のような表を作成しました。
今日までのタスクを抽出
元データから納期が今日までのタスク(期限切れのタスク)を抽出する方法です。
関数
=QUERY(B2:G12,”where F <= date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,true)
出力結果
解説
「今日の日付」は毎日変更されるためTODAY関数を使います。
TEXT関数の第一引数をセル番号ではなく、TODAY関数にすることで常に今日の日付を条件に指定することができます。
加えて、今回は「今日の日付まで」という条件なので比較演算子も「=」から「<=」に変更しています。
◯日から◯日までのタスクを抽出
次は特定の期間に一致するタスクを抽出する方法です。
関数
=QUERY(B2:G12,”where F >= date ‘”&TEXT(B14,”yyyy-mm-dd”)&”‘ and F <= date ‘”&TEXT(D14,”yyyy-mm-dd”)&”‘”,true)
出力結果
解説
関数が長く複雑に思えますが、これまで解説したセル参照の条件をandで繋げているだけです。
分割してみると見やすくなると思います。
=QUERY(B2:G12,”where F >= date ‘”&TEXT(B14,”yyyy-mm-dd”)&”‘ and F <= date ‘”&TEXT(D14,”yyyy-mm-dd”)&”‘“,true)
QUERY関数で条件を複数指定する方法はこちらの記事でご確認ください。
今月中のタスクを抽出
最後に今月中のタスクを抽出する方法です。
解説
=QUERY(B2:G12,”where F <= date ‘”&TEXT(EOMONTH(TODAY(),0),”yyyy-mm-dd”)&”‘”,true)
出力結果
「今月中」を表示するために便利な関数がEOMONTH関数です。
EOMONTH関数の第一引数にTODAY関数、第二引数に0を指定することで今月末を表示できます。
EOMONTH(TODAY(),0)
これをTEXT関数の第一引数に指定すれば、今月中のタスクだけを抽出することができます。
比較演算子も「<=」に変更するのを忘れずにしてください。
補足
なぜわざわざEOMONTH関数を使うかというと、月末日を毎月変更する必要がなくなるためです。
来月になればEOMONTH関数が返す日付も自動的に来月末日になるため、シート管理が楽になります。
EOMONTH関数の第二引数に0を指定しましたが、ほかにも以下のような指定方法があります。
数値 | 意味 | 使用例 | 出力結果 |
---|---|---|---|
-1 | 先月末 | EOMONTH(“2022-08-16”,-1) | 2022/07/31 |
0 | 今月末 | EOMONTH(“2022-08-16”,0) | 2022/08/31 |
1 | 翌月末 | EOMONTH(“2022-08-16”,1) | 2022/09/30 |
2 | 翌々月末 | EOMONTH(“2022-08-16”,2) | 2022/10/31 |
-1以下・2以上の数値も指定できますが、基本的には「-1」「0」「1」を覚えておくと良いでしょう。
まとめ
今回はスプレッドシートのQUERY関数で日付を条件にする方法をご紹介しました。
「date」をつけることを意外と忘れがちなので、これを機にマスターしましょう。
QUERY関数の使い方
ー | クエリ | 解説 |
---|---|---|
基礎 | select | 抽出する列を指定する |
基礎 | where | 抽出する条件を指定する |
基礎 | order by | 抽出するデータの並び替えを行う |
基礎 | group by | 抽出する列のデータ集計を行う |
基礎 | label | 抽出するデータの見出しを変更する |
応用 | ー | IMPORTRANGE関数と組み合わせて別シートを参照する方法 |
応用 | ー | 複数の範囲・シートを結合させる方法 |
応用 | where | 空白行だけを抽出・除外する方法 |
応用 | where | 複数の条件を指定する方法 |
応用 | where | 条件指定をセル参照にする方法 |
応用 | where | 条件指定に日付を使う方法 |