【スプレッドシート】QUERY関数で複数範囲・複数シートを結合する

スプレッドシートでの情報操作に便利な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 /]
[su_note note_color="#00BFFF" text_color="#ffffff"] 人気の記事

icon-check-circle Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]