「検索キーワードと一致した時にその行を抽出したい!」
そんな時に思い浮かぶのは「VLOOKUP」関数だと思います。
「検索ワードが範囲内にあれば指定した位置のセルを返す」
と言った物ですが、
「セルだけじゃなく行そのものを取得したい」
とか
「行じゃなく範囲で検索したい」
って時にはVLOOKUPだと手間ではないでしょうか?
1行に取得したい情報が10セルとかあると関数を10個分作らないといけないのでめんどくさいですねぇ。
これをもっと簡単に取得出来る方法が今回紹介する「Query関数」になります。
Query関数のテンプレート
使って覚えるからさっさっとテンプレートよこせ!って方はこちらから
指定した範囲全てを返すテンプレート
1 |
=QUERY("範囲") |
その名の通り指定した部分がまるっと全部表示されます。
選択した行だけを返すテンプレート
1 |
=QUERY("範囲","select カラム") |
例:=QUERY(A1:D8,"select A")の場合
A1からD8までの範囲内にあるA列のみを表示する。
selectの部分は文字列なのでしっかり「"」で囲みましょう。
条件に合う行だけ返すテンプレート
1 |
=QUERY("範囲","where 条件") |
例:=QUERY(A1:H7,"where D < 500")の場合
A1からH7までの範囲内にあるD列が500以下の行を表示する。
上記画像でもD列が500以下の列だけを表示されてますね。
範囲内の並べ替えをするテンプレート
1 |
=QUERY("範囲","order by カラム ascもしくはdesc") |
例:=QUERY(A1:H7,"order by B asc")昇順の場合
A1からH7の範囲のB列を基準に昇順に並び替える。
例2:=QUERY(A1:H7,"order by B desc")降順の場合
A1からH7の範囲のB列を基準に降順に並び替える。
テンプレートを組み合わせる。
1 |
=QUERY("範囲","select カラム where 条件 and 条件 or 条件 order by カラム ascもしくはdesc") |
例:=QUERY(A1:H7,"select A where D > 400 and F > 30 or F = 24 order by B desc")
とりあえずモリモリのマシマシ状態で作ってみました。
範囲A1からH7までの条件D列が400以上&Fが30以上のA列、もしくはFが24のA列を降順で表示する。
長くなると複雑に見えるけれど、上記テンプレートを組み合わせただけの物です。
複数条件で絞りたい時などは「and」や「or」などで条件をさらに加える事が出来ます。
Query関数とは?
スプレッドシート上の関数の説明では、「Google Visualization API のクエリ言語を使用して、データ全体に対するクエリを実行します。」のような意味の分からない文章を書いています。
これだけじゃ何言っているのか分からないと思うので、もっと簡単に表現するなら
「範囲内のデータを条件つけてヒットした物だけ表示する」
これだけです。
ある意味エクセルのピボットに似た感じがしますねぇ。
まとめ
queryはかなり便利なので知っておいて損は無い関数です。
何気にWordpressとか自分でいじってると100%目にする関数なので、これからプログラミングしていこうって人には最初の触りとしては良い関数かもしれないね。
行の抽出から複数条件に並び替えもセットになっているので、VlookUPやifだけじゃコードが複雑になりすぎていた計算とかがすっきりします。
これを気にぜひともquery使いとして活躍してください。