スプレッドシートでの情報操作に便利なQUERY関数。ただ、複数範囲を結合してQUERY関数で扱いたい場合に、エラーが出て思ったように処理できない方が多いと思います。QUERY関数の場合、そのときの範囲の性質によって、条件での列の指定の仕方が変わるため、少しやっかいです。
この記事では、結合した範囲をQUERY関数で処理する方法、結合したQUERY関数を範囲としてQUERY関数で処理を行う方法を解説します。画像と例を付けているので、分からなかったら手を動かしてみましょう。
単純な範囲の結合方法
単純に範囲Aの下に範囲Bを結合する場合、下記のような表現をします。
={範囲A;範囲B}
範囲の結合例
={B3:E8;G3:J8}
結合した範囲に対してQUERY関数を使う方法
結合した範囲に対してQUERY関数を使う場合には注意が必要です。
普段のQUERY関数なら列の指定を「SELECT A,B」や、条件の指定を「WHERE A=3」のように使っていますが、結合した範囲に対してはそのような表記をするとエラーが表示されます。
結合した範囲に対するQUERY関数では「Col1」「Col2」…を使う
結合した範囲の場合、参照している範囲が、A列だけ、B列だけなわけではないので、「Col1(=範囲1列目)」、「Col2(=範囲の2列目)」のような表記を使用します。
結合した範囲に対するQUERY関数例
例えばAとBの範囲を結合した範囲に対して、3列目が転職の行だけを表示するQUERY関数は次のようになります。
=QUERY({B3:E8;G3:J8},"WHERE Col3 = '転職'")
※1列目は「Col0(ゼロ)」ではなく「Col1」だということに注意して番号を振りましょう。
結合した複数のQUERY関数を範囲としたQUERY関数の使い方
言葉にするとややこしいですが、やりたいことは、下記のようなQUERY関数による処理です。
=QUERY({ QUERY(範囲A,条件A); QUERY(範囲B,条件B)}, 条件C)
※見やすさのために改行
結合した複数のQUERY関数を範囲としたQUERY関数例
Aの就活カテゴリ、Bの転職カテゴリを結合して、結合した範囲でPVが100より大きいものを表示する関数式。
=QUERY({ QUERY(B3:E8,"WHERE D ='就活'"); QUERY(G3:J8,"WHERE I='転職'")}, "WHERE Col4 > 100")
※見やすさのために改行
IMPORTRANGE関数とQUERY関数で、複数の別シートの範囲を結合する方法
複数のIMPORTRANGE関数とQUERY関数を組み合わせることで、別シートに存在する配列を結合して処理することができます。
=QUERY({ IMPORTRANGE(シートURL,シート範囲); IMPORTRANGE(シートURL,シート範囲)}, "WHERE 条件")
※見やすさのために改行
上記のようにIMPORTRANGE関数とQUERY関数を 使用します。
複数の別シートの範囲を結合する例
=QUERY({ IMPORTRANGE("シートURL","シート115!B3:E8"); IMPORTRANGE("シートURL","シート115!G3:J8")}, "WHERE Col3='転職'")
※見やすさのために改行
※今回は「シートURL」は伏せ字として使用しています。
ここでもやはり、QUERY関数内でIMPORTRANGE関数を使用した場合、QUERY関数の条件では「Col数字」の表記で指定します。
[table id=31 /]Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]