【QUERY関数|date】日付条件をセル参照する方法とエラー対応

関数教室
新任
新任

前回の話で、月初・月末の日付を自動取得できることは分かりました。

でもやっぱり好きな日付を指定したい時もあるんですよね〜。

人事のプロ
人事のプロ

日付データを活用するには、状況に合わせてそれぞれを使い分けることが大切よね。

但し、数式内に直接日付条件を埋め込むのはミスに繋がるので、必ずセル参照すること。

やり方は簡単なので覚えてしまいましょう!

この記事を読んだら
  • QUERY関数「いつからいつまで」という日付範囲を指定してデータ抽出できる
  • セル参照の方法を知ることで、条件変更時の式修正が不要になる
    • 工数の削減を通じて作業ミスを抑制
    • 指定したセルに日付を入力することで抽出条件を変更できる

QUERY関数で便利なlike(部分一致)の抽出条件をセル参照する方法については、こちらの記事で詳しく解説しているので、参考にしてみて下さい。

復習:dateの基本的な使い方

QUERY関数日付指定する際のルールは以下の通りです。

  • date '指定する日付'
    • 日付として読み込むために、「'」で文字列にしてから、頭に「date」をつける
    • 数式内で指定する日付形式は「YYYY-MM-DD
      • それぞれ「-」で区切る
      • 日本語にすると「年-月-日」
        • 例:2021-5-15

実際に人事業務で活用してみます。

例えば、以下の休職データから「4月の休職者」を抽出します。

休職データ
休職データ

月次の給与計算等ではよくあるシーンですよね。

4月の休職者なので、「休職開始日が2021年4月1日以前」かつ「休職終了日が2021年4月30日以降」の従業員を抜き出すと、以下のようになります。

スプレッドシートでQUERY関数を使用して、「休職開始日が2021年4月1日以前」かつ「休職終了日が2021年4月30日以降」の従業員を抜き出したキャプチャ

以下の文字列をコピーして使ってみましょう。(緑文字を置き換え)

=query('シート名'!$この列から:$この列まで,"select* where 検索列<=date'2021-4-1' and 検索列>=date'2021-4-30'")

Copy
  • 1営業日も勤務していない休職者を抽出
    • 少なくとも4/1と4/30は休職していることが条件になる
【補足】シートに関数をコピーする方法
  • 貼り付けたいセルにカーソルを合わせて「fx」欄に貼り付け
    • キーボード「F2」ボタン(セル編集)を押してから貼り付けでも可
スプレッドシートに関数をコピペするには、対象セルにカーソルを合わせて「fx」欄に貼り付けることを説明したキャプチャ

別セルに入力した日付条件を参照する方法

成功事例

先程のケースでは、数式内に日付条件を直接埋め込みましたが、セル参照に変更すると以下のようになります。

スプレッドシートでQUERY関数を使用して、「休職開始日が2021年4月1日以前」かつ「休職終了日が2021年4月30日以降」の従業員をセル参照で抜き出したキャプチャ
A1セル・A2セルに日付条件を入力
新任
新任

これってlike(部分一致)でセル参照する時と同じですかね?

date''の間が変な記号指定したセル置き換わるだけですね。

人事のプロ
人事のプロ

そうね!(変な記号って…)

QUERY関数の中でセル番地として認識させるために"(ダブルコーテーション)&(アンド)で挟み込む必要があるの。

失敗事例(エラー対応)

新任
新任

同じなら余裕っすね!

僕もやってみよっと。

スプレッドシートでQUERY関数を使用して、日付条件をセル参照で指定するも、文字列になっておらずエラーが出ているキャプチャ
セル参照の失敗事例
新任
新任

ゔぁりゅううう?!?!

できまてんでした。

人事のプロ
人事のプロ

あ、これは誰もがハマるやつね。

参照セル文字列(テキスト)にすれば解決よ。

最も手っ取り早いのは、以下のようにセルを選択して「書式なしテキスト」に変更する方法です。

セルを選択して、「表示形式の詳細設定」のプルダウンから「書式なしテキスト」を選択するキャプチャ
「表示形式の詳細設定」のプルダウンから「書式なしテキスト」を選択

すると、無事にエラー解決することができました。

スプレッドシートでQUERY関数を使用して、日付条件をセル参照で指定する際、書式を文字列にすることでエラー解決したキャプチャ
エラー解決

=query('シート名'!$この列から:$この列まで,"select* where 検索列①<=date'"&セル番地①&"' and 検索列②>=date'"&セル番地②&"'")

Copy
  • QUERY関数の中でセル番地として認識させるために"(ダブルコーテーション)&(アンド)で挟み込む
  • 参照セルを文字列(テキスト)にする
    • 「表示形式の詳細設定」のプルダウンから「書式なしテキスト」を選択

今回は、日付条件セル参照する方法について解説しました。

このように、関数ではなるべく変数(抽出条件)を外(別セル)に置くことで、条件変更が楽になり、作業ミスも減ります。

QUERY関数日付指定について詳しく知りたい方は、こちらの記事をご覧下さい。

タイトルとURLをコピーしました