別ファイルからデータを取り出すIMPORTRANGE関数-GSS/Excel/関数
スプレッドシートで作業をしているときに、別のスプレッドシートにあるデータを参照したい時ってありますよね。部分的なもので今後更新がない場合はコピペすればいいだけではありますが、参照したいファイルが常に更新するものだったり、更新した内容も参照したい場合は、都度都度コピペしていてはとても時間がかかります。
そういうときに便利なのがIMPORTRANGE関数です。外部データを取り込むIMPORT系関数は覚えると使う頻度が高くなるとても使い勝手がよい関数なので、ぜひ覚えて使ってみてください。
使い方
=IMPORTRANGE("参照元URL","参照範囲")
IMPORTRANGE関数の作りはとても簡単で、参照したいスプレッドシートのURL、またはシートIDと、その対象範囲を指定するだけです。
例えば、参照元URLが「https://docs.google.com/spreadsheets/d/123abcdef-123AABBCCDDEEFF-123abcdef」で、参照したいシートが「シート1」で、範囲が「A1:D」だった場合、次の記述になります。
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/123abcdef-123AABBCCDDEEFF-123abcdef","シート1!A1:D")
範囲は、ほかの関数と同様に、シート名とセル範囲を「!」でつないでください。
ダブルクォーテーション("")が足りないことで関数エラーになることがよくあるので、URL、範囲ともにダブルクォーテーションでくくることを忘れないでくださいね。
応用
応用として、QUERY関数との組み合わせもご紹介します。
IMPORTRANGEでデータを参照をしたのちに、FILTER関数で使いたいものだけフィルタリングしたいというときは、最初からQUERY関数とIMPORTRANGE関数を組み合わせて、使いたいところだけ抽出された状態で参照すると、データ数と処理数が重くならずに済みます。
参照元の使い方が複数ある場合などは、あえてIMPORTRANGE関数とFILTER関数を両方使うで問題ないです。私は管理系ファイルや分析ファイルを作るときにはこちらの処理になることが多いです。
QUERY関数
=QUERY(対象範囲,"抽出条件",見出し行の数)
一つずつ説明します。
対象範囲は、抽出する範囲を指定します。
さきほどのIMPORTRANGE関数で作ったような数式がそのまま対象範囲になります。
対象範囲=IMPORTRANGE("https://docs.google.com/spreadsheets/d/123abcdef-123AABBCCDDEEFF-123abcdef","シート1!A1:D")
そのうち、D列に「AAA」という値が入っている部分だけ抽出したいとします。
その場合、抽出条件は「"where Col4 ='AAA'"」となります。
Col4とは、4番目のカラム(列)を意味し、D列を表します。A列ならCol1になります。
抽出条件="where Col4 ='AAA'"
そして見出し行の数ですが、データの見出しがある行を指定するだけです。1行目が見出しで2行目から値が入っているなら「1」となります。
見出し行の数=1
これらを合わせると以下の数式になります。
=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/123abcdef-123AABBCCDDEEFF-123abcdef","シート1!A1:D"),"where Col4 ='AAA'",1)
以下は祝日の参照元シートから曜日が「月」の祝日のみを抽出しながらインポートするという関数とその結果です。
=query(importrange("1MfUcQiB-9qVqO0gQbA8fKb-LLljGG0vgGOvUjTZ4Pwc","祝日参照シート!a1:c"),"where Col2 ='月'",1)
=query(importrange("1MfUcQiB-9qVqO0gQbA8fKb-LLljGG0vgGOvUjTZ4Pwc","祝日参照シート!a1:c"),"where Col2 ='月'",1)
まとめ
- IMPORTRANGE関数・QUERY関数の使い所
- 別のスプレッドシートの値を参照したいとき
- 構文
- =IMPORTRANGE("参照元URL","参照範囲")
- =QUERY(対象範囲,"抽出条件",見出し行の数)
- 例文
- IMPORTRANGE
- =IMPORTRANGE("https://docs.google.com/spreadsheets/d/123abcdef-123AABBCCDDEEFF-123abcdef","シート1!A1:D")
- QUERY
- =QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/123abcdef-123AABBCCDDEEFF-123abcdef","シート1!A1:D"),"where Col4 ='AAA'",1)
- IMPORTRANGE