スプレッドシートの使い方

【スプレッドシート】QUERY関数で条件に日付を指定する方法

query_日付_date

スプレッドシートのQUERY関数の条件に日付を使うとき、思ったように日付が入らないときがあると思います。

上記のような関数表記は誤りなため、「#VALUE!」と表示されてどうすればよいか困る方も多いでしょう。。

この記事では、日付をQUERY関数で扱う3つの方法に加えて、年・月・日での指定方法を最後に解説していきます。

①直接日付の値を指定する方法

日付を直接指定する方法は次のような表記をします。

クオーテーション(’)で囲いテキストとして扱っていることに注意してください。また、ハイフン(-)で年月日を繋いだ表記にも注意です。

直接日付の値を指定する例

実際にスプレッドシート上で、QUERY関数に「2018年1月1日」の日付でデータを探す指定をすると、次のような表記になります。

②変数の日付を指定する方法※非推奨

より汎用的に扱うためには、日付をセル参照したいですよね。単純に下記のようにセル参照する場合には、参照するセルの書式設定を「書式なしテキスト」と設定する必要があるので注意です。

変数の日付を指定する例

例えば、予め入力しておいた「2018-01-01(書式なしテキスト)」を、QUERY関数から参照してデータを表示すると次のような例になります。

※C8のセルは「書式なしテキスト」に設定

 

③変数の日付を指定する方法※推奨

こちらが一番推奨される方法です。1つ前の日付を扱う方法2では、参照する日付のセルをあらかじめ「書式なしテキスト」に設定しておく必要がありました。

ここで紹介する方法では、参照する日付のセルをTEXT関数を使って、「YYYY-MM-DD」に変換してQUERY関数に渡してあげる方法です。

※日付を参照するセルは「書式なしテキスト」の書式に設定する必要がなくなる

変数の日付を指定する例

日付が入力されているC8セルを、TEXT関数によって「2018-01-01」に変換し、QUERY関数でデータを出力した例が次になります。

年・月・日だけの日付で条件を指定する

これまでは年月日がセットになった指定方法を見てきました。ここからは、年月日を独立してQUERY関数で条件指定して、該当データを出力する方法をご紹介します。

ここからの指定時には、これまでテキストとして扱っていたためにあったクオーテーション(’)が不要になる点に注意してください。

年だけの指定

年だけを条件指定する場合には、YEAR関数を使って、次のようにQUERY関数を表記します。

年だけの指定例

次の例は、日付が2018年のデータだけを表示するQUERY関数です。

月だけの指定

ほとんどYEARと同じQUERY関数の表記ですが、 MONTH()に限っては、1月を0としてカウントしている点に注意してください。そのため、MONTH()に+1をする必要があります。

月だけの指定例

次の例は、1月のデータを指定するQUERY関数です。

※MONTH()の中はスタートが0(例:1月→00、2月→01)だから+1にしてあげる

日だけの指定

日だけの指定は、年指定とほぼ同じようなQUERY関数の表記になります。

日だけの指定例

次の例では、1日を指定するQUERY関数になっています。

QUERY関数の使い方」まとめ
QUERY関数の使い方使用頻度使用例
オプションOrder byで昇順・降順を指定する★★QUERY("範囲" "order by 列 asc")
オプションgroup byで同じ値をグルーピングして集計する★★★QUERY(範囲,"select 列A, 集計関数(列B) group by 列A")
オプションpivotを使って、group byをさらにグルーピングして表示するQUERY(範囲, "select 列A, 集計関数(列A) where group by 列A pivot 列B")
オプションlabelを使って、出力される列のラベルを変更するQUERY(範囲, "label 列 '名前' ")
オプションformatを使って、出力される値の表示形式を変更するQUERY(範囲, "format 列 '表示形式' ")
オプションlimitを使って、表示する行数に制限をかけるQUERY(範囲, "limit 数")
オプションoffsetを使って表示データを上からスキップする方法QUERY(範囲, "offset 数")
オプションoptionsを使う
演算子containsを使って、指定文字列を含む行を表示する★★QUERY(範囲, "where 列 contains '検索文字列' "
演算子starts withを使って、行の先頭文字列に条件を指定するQUERY(範囲, "where 列 starts with '検索文字列' "
演算子ends withを使って、行の後尾文字列に条件を指定するQUERY(範囲, "where 列 ends with '検索文字列' "
演算子likeで複雑な条件を指定するQUERY(範囲,"where 列 like '検索文字列' ")
演算子★★★QUERY(範囲,"WHERE 列 matches '正規表現' ")
テクニックwhereの条件で空白を指定・除外する★★QUERY(範囲, "where 列 is not null")
テクニックQUERY関数にSUM関数を使う★★SUM(QUERY(範囲, "where 条件")
テクニックwhereの条件に日付を指定する★★★QUERY(範囲,"where 列 = date '"& TEXT(セル,"YYYY-MM-DD") &"'")
テクニックQUERY関数内でimportrange関数を使って、別シートを参照する★★★QUERY(importrange(シートID,参照範囲), "where 条件")
テクニック複数範囲・複数シートを結合する★★QUERY({IMPORTRANGE(シートURL,シート範囲);IMPORTRANGE(シートURL,シート範囲)},"WHERE 条件")
テクニックwhereの条件を複数指定する★★★QUERY("範囲", "where 条件A or 条件B and 条件C")

次の記事も読むと、未来のユーザーニーズが見えてきます

icon-check-circle Google検索の変遷から見えてくる「Googleがキュレーション化する日」
あなたの課題はなんですか?
【SEO】順位が上がらない。アクセスが集まらない。
SEOで重要なことは、ユーザーが求めている体験は何かを、感覚ではなく理論で落とし込み、どのページでも上位表示を狙える体制をつくることです。順位が上がらない、アクセスが増えないことでお悩みの方はお悩みの方は、立ち上げから1,500万PVにまで成長させた私のSEO経験がお役に立てるかもしれません。お気軽にご相談ください。
【アフィリエイト】成果が発生しない。リンクをクリックされない。
アフィリエイトで重要なことは、「何を伝えるか」ではなく「どういう気持にさせるか」「何を伝えないか」です。アフィリエイトの成果を加速させたい方は加速させたい方は、4年間積んだアフィリエイト経験が役に立つかもしれません。お気軽にご連絡ください。
【サービス登録率】登録まで行かない。登録率が改善しない。
登録率改善で重要なことは、ユーザーの思考回路を順を追って仮説として1つずつ検証していくことです。1%→3%に登録率を改善させた経験をノウハウ化して共有いたします。
【広告運用】CPAが下がらない。毎回数値がブレる。
広告運用で重要なことは、「これが刺さるだろう」と再現性の無い施策をうつのではなく、頻繁にクリエイティブを変更しても、同じ効果が維持できる検証をし続けることです。転職広告のCPA20,000円→8,000円にした経験で、お役に立てることがあるかもしれません。気軽にご連絡ください。
Twitterをフォロー 30分相談 コンサル相談 匿名質問
(2018年3月12日現在、1件コンサルの空きがあります)