LoginSignup
6
3

More than 1 year has passed since last update.

QUERY関数で任意のデータを取得したい

Posted at

QUERY関数って便利だね

はじめに

この記事ではスプレッドシートのQUERY関数について触れていきます。

きっかけ・課題

レビュー管理台帳-のコピー-Google-スプレッドシート (2).png

上記のような表を複数人で更新する作業があり、
こちらに案件を各々で記載してレビューを依頼する運用なのですが、、、、
 

「来週何件記載があるのか直観的にわからない!!!!」:sob:
日付の並びもバラバラに記載されたりして、週ごとの件数が分かりにくくなるという問題がありました。

今週は何件、来週は何件とすぐわかるようにしたい!!!!!!
 

いざ実践!!

QUERY関数を使って、見たいデータのみ勝手に抽出してくれるようにしていきます!

まず、別シートを作り任意の箇所に下記の記載をしてみます。
第1引数に取得したいシートのデータ範囲を指定し、
第2引数でSELECT句を使って取得したい列を指定しています。
=QUERY('一覧'!$A1:$H500,"SELECT A,B,C,D,E,F,G")

結果は
レビュー管理台帳-のコピー-Google-スプレッドシート (3).png

一覧のシートの情報をA~G列分とってこれました。

続きまして~
来週の情報のみを取得してみたいと思います。
本記事を記載している現在の日付が2023/3/29なので
来週は月曜始点で4/3~4/9の情報が欲しい!!

先ほどの関数にWhere句を足していきます。
一覧シートのB列が日付を入力する列なので
B列の値が4/3より後で4/9より前のものという条件を追加。
=QUERY('一覧'!$A1:$H500,"SELECT A,B,C,D,E,F,G WHERE B >= date '2023-4-3' AND B <= date '2023-4-9'")

結果は
レビュー管理台帳-のコピー-Google-スプレッドシート (4).png

取れました!

(あれ、、でもこれわざわざ書いてたら余計時間かかるんじゃ、、、)

更に手を加えていきます。
別途TODAY関数とWEEKDAY関数を組み合わせて
今週、来週、再来週を自動で取得する表をあらかじめ作っておきます。

・今週初め=TODAY()-WEEKDAY(TODAY(),2)+1
・今週終わり=TODAY()-WEEKDAY(TODAY(),2)+7

・来週初め=TODAY()-WEEKDAY(TODAY(),2)+8
・来週終わり=TODAY()-WEEKDAY(TODAY(),2)+14

こんな感じ
レビュー管理台帳-のコピー-Google-スプレッドシート (5).png

準備は整いました。
では仕上げです!

先ほどは日付を直書きしていましたがセル参照にします。
TODAY関数さんたちが勝手に週を切り替えてくれるので、いつ見ても来週の情報が取得できるようになりました!
=QUERY('一覧'!$A1:$I504,"SELECT A,B,C,D,E,F,G WHERE B >= date '"&TEXT(X13,"YYYY-MM-DD")&"' AND B <= date '"&TEXT(Y13,"YYYY-MM-DD")&"'")

各週の表を作成してみた結果がこちら
レビュー管理台帳-のコピー-Google-スプレッドシート (7).png

改めて元の一覧はこちら
レビュー管理台帳-のコピー-Google-スプレッドシート (2).png

一目瞭然になりました!!!!!!:point_up::point_up:

おわりに

データベース触ったことがある方はとっつきやすい関数だと感じました。
今回はWhere句の日付はあらかじめ決め打ちした期間を表で作成して指定しましたが
「閲覧したい日付を入力してください」みたいな項目作って閲覧者が自由に期間設定できる形にしても良いなぁと思いました。

参考資料

出典:いつも隣にITのお仕事 (最終閲覧日:2023年3月25日)
https://tonari-it.com/spreadsheet-query-where-date/

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3