2021/03/18

【スプレッドシート】Importrange関数とQuery関数の融合


こんにちは!

Query関数の処理の速さが病みつきになっているtknriaです。

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

今回は、Importrange関数を組み合わせることで、他のスプレッドシートを参照して一部を抽出する方法を紹介します。


Query関数の引数にImportrange関数を使う


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

これを行うために、まずは、B内のsheet2のセルにAのデータを引用してくる必要があります。

そこで、Bのsheet2に、

 =Importrange("スプレッドシートAのキー","'sheet1'!A1:C3")

と入力すれば良いです。

ここから、A列とC列のみを抽出するので、

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

と組み合わせます。


それがこちらです。

 =Query(Importrange("スプレッドシートAのキー","'sheet1'!A1:C3"), "select Col1, Col3)"


おわかりでしょうか。

下記のQuery関数において、

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

1つ目の引数の「'sheet1'!A1:C3」が「Importrange(~~)」に置き換わって、

2つ目の引数の「"select A,C"」は「"select Col1, Col3"」に変わっています。


前者については、参照する範囲を変更しているだけなので、問題ないかと思いますが、

後者は要注意です。


1つ目の引数の範囲が、同じスプレッドシート内だったら、抽出したい列名を直接アルファベットで指定すればよかったですが、

別のスプレッドシートを参照する場合には、指定されたの範囲の中の何列目かを指定する必要があります。

今回は、A列~C列の3列のなかのA列とC列(1列目と3列目)を抽出するというものだったので、「Col1, Col3」と指定しなければなりません。


少し慣れが必要なところではありますが、何度か実際に使ってみるなかで感覚的にわかってくると思うので、ぜひトライしてみてください。


億劫なあとがき


いかがでしたか。

例えば、同じ営業部内でも、商材によって管理しているスプレッドシートが別、ただ数字はまとめて管理したい、というようなケースがあると思います。

実際に私の部署はそうしています。
知っておいてほしい数字と知らなくていい数字があるので、その切り分けにとてもやりやすいです。

そういった場合には、今回のようにImportrange関数とQuery関数の合わせ技が有効です。