2021/03/17

【スプレッドシート】Query関数を使ってシートを一部分のみ参照したい



こんにちは!

もうすぐ年度がかわりますが、引き続きスプレッドシートを多用しそうで嬉しいtknriaです。


以前、スプレッドシートのデータを他のスプレッドシートで参照する関数としてIMPORTRANGE関数をご紹介しました。

億劫な細道|別のスプレッドシートの値を参照したい


今回は、あるデータを参照して、条件付きで引用してくる、という関数を紹介します。



Query関数を使ってみよう


その関数はQuery関数です。

例えばスプレッドシートA内のsheet1の範囲A1:C3のデータを、同じA内のsheet2で参照することを想定します。

これを行うためには、sheet2のセルに、

 =Arrayformula('sheet1'!A1:C3)

と入力すれば良いです。

同様に、Query関数を使うと、

 =Query('sheet1'!A1:C3)

となります。

これだけなら、Query関数の特徴はそれほど目立たないのですが、ここからが本領発揮です。


Query関数を使って指定した列だけ抜粋する


上記の例で、A列とC列だけを抜きだしたい場合、

 =Arrayformula('sheet1'!A1:A3)

 =Arrayformula('sheet1'!C1:C3)

と分けて抽出する必要があります。

これが、Queryを使うと、

 =Query('sheet1'!A1:C3, "select A,C")

と1つの関数で書けてしまいます。


Query関数を使って条件に合う値をもつ列を行ごと抜粋する


具体例でいうと、営業マンが3人(D~Fさん)いて、それぞれの受注案件をリスト化していることを想定します。

ここから、Dさんの案件のみを抽出する場合、スプレッドシートのフィルタ機能を使うこともできますが、Query関数を使っても可能です。

sheet1のB列に担当営業の名前が入っているものとすると、

 =Query('sheet1'!A1:C3, "where B='D'")

とすれば、Dさんの案件のみを抽出することができます。


億劫なあとがき


いかがでしたか。

Query関数でできることは他にもありますが、今日はここまで。