IMPORTRANGE はデータを取ってくるだけの関数です。
絞る、並べる、数える、といったことは自分ではしません。
他の関数で包むことで、その場で加工できます。
よく使う組み合わせを、目的別にまとめます。
| やりたいこと | 包む関数 |
|---|---|
| 条件で絞る、列を選ぶ、集計する | QUERY |
| 条件で絞るだけ | FILTER |
| キーで1件引く | VLOOKUP |
| 件数や合計を出す | COUNTIF SUMIF |
| 並べ替える | SORT |
| 条件付き書式で使う | 直接は使えない |
QUERYで絞る|いちばん使う
取ってきたデータを、必要な行と列だけにできます。
=QUERY(
IMPORTRANGE("URL", "シート1!A:E"),
"select Col1, Col3 where Col2 = '東京'",
1
)ここが最大のつまずきどころです。
普通の QUERY は select A, C のように列の文字で書きます。
ところが IMPORTRANGE を包んだ場合は、Col1 Col2 のように番号で書きます。
取ってきた範囲の左から数えた番号です。
元のシートでC列でも、取ってきた範囲がC列から始まっていれば Col1 になります。
最後の1は見出し行の数
3つ目の 1 は「1行目は見出し」という意味です。
これを省くと、見出しがデータとして混ざったり、数字の列が文字として扱われたりします。
結果がおかしいときは、まずここを疑ってください。
複数の条件を書く
"select * where Col2 = '東京' and Col4 > 1000"
"select * where Col2 = '東京' or Col2 = '大阪'"
"select * where Col2 = '東京' order by Col4 desc"文字はシングルクォート、数字はそのまま書きます。
並べ替えまで QUERY の中でできるので、SORT を別に使う必要はありません。
セルの値を条件にする
条件を式に直接書かず、セルから読ませたい場合は文字列をつなぎます。
=QUERY(
IMPORTRANGE("URL", "シート1!A:E"),
"select * where Col2 = '" & B1 & "'",
1
)B1に「東京」と入れれば、そこだけ絞られます。
シングルクォートの位置に注意してください。
条件が数字ならクォートは要りません。
FILTERで絞る|書き方が近い
列を選ばず、行だけ絞りたいなら FILTER のほうが短く書けます。
=FILTER(
IMPORTRANGE("URL", "シート1!A:E"),
INDEX(IMPORTRANGE("URL", "シート1!A:E"), 0, 2) = "東京"
)FILTER は条件の列を別に指定する必要があるため、IMPORTRANGE を2回書くことになります。
INDEX(..., 0, 2) は「2列目を丸ごと」という意味です。
式が長くなるので、条件が1つでも QUERY のほうが読みやすいことが多いです。
VLOOKUPで引く
取ってきた表を、そのまま検索範囲として渡します。
=VLOOKUP(
A2,
IMPORTRANGE("URL", "シート1!A:E"),
3,
FALSE
)3つ目の 3 は、取ってきた範囲の左から3列目です。
元のシートの列名ではありません。
ここも QUERY と同じ考え方です。
遅いと感じたら
この書き方だと、1行ごとに外部ファイルを読みに行きます。
行数が多いと目に見えて重くなります。
作業用のシートを1枚用意して、そこに IMPORTRANGE を1回だけ書く方法をおすすめします。
- 「取込」シートを作り、
A1に=IMPORTRANGE(...)を1つだけ置く - 他の式は
取込!A:Eを参照する
読み込みが1回で済み、式も短くなります。
COUNTIFやSUMIFで数える
=COUNTIF(IMPORTRANGE("URL", "シート1!B:B"), "東京")
=SUMIF(
IMPORTRANGE("URL", "シート1!B:B"), "東京",
IMPORTRANGE("URL", "シート1!D:D")
)0になってしまうとき
エラーは出ないのに 0 が返る、という相談が多い組み合わせです。
順に確認してください。
| 確認すること | 直し方 |
|---|---|
| アクセスを許可していない | 先に =IMPORTRANGE(...) だけを別のセルに置き、許可を押す |
| 前後に空白が入っている | 元データを TRIM で整える |
| 数字が文字として入っている | 元のセルの表示形式を数値にする |
| 範囲がずれている | 数える列と合計する列の高さを揃える |
いちばん多いのは1つ目です。
他の関数で包むと「アクセスを許可」のボタンが出ないため、承認されないまま 0 になります。
面倒でも、最初は IMPORTRANGE 単体で1回動かしてから包んでください。
条件付き書式では直接使えない
「別ファイルの値を見て色を付けたい」はよくある要望です。
条件付き書式のカスタム数式に IMPORTRANGE は書けません。
そもそもカスタム数式は、他のシートすら直接は参照できない仕様です。
他のシートを見たい場合は INDIRECT を挟みます。
ただし別ファイルは INDIRECT でも参照できません。
手順としては次のとおりです。
- 作業用のシートに
IMPORTRANGEでいったん取り込む - 条件付き書式では、そのシートを
INDIRECT経由で参照する
=A2 = INDIRECT("取込!A2")ひと手間かかりますが、これが確実な方法です。
よくあるエラー
| 出るもの | 意味と対処 |
|---|---|
#REF! | 未承認か権限なし。単体で置いて「アクセスを許可」 |
| インポート範囲の内部エラー | 範囲の書き方かシート名の誤り。時間をおくと直る場合もある |
#VALUE! | 包んだ関数の引数が合っていない。列番号を確認 |
| 読み込みが終わらない | 取ってくる範囲が広すぎる。列を絞る |
| 更新されない | 反映には遅れがある。急ぐ用途には向かない |
取ってくる範囲は必要な列だけにしてください。
A:Z のように広く取ると、そのぶん重くなります。
IMPORTRANGE関数そのものの使い方はこちらです。

まとめ
- 絞る・選ぶ・並べるを1つで済ませるなら
QUERY - 包んだときの列は
Col1や数字。元シートの列名ではない QUERYの3つ目の引数(見出し行の数)を省かないCOUNTIFが0になるのは、たいてい承認していないから- 条件付き書式では直接使えない。取込シートを挟んで
INDIRECT - 重いときは
IMPORTRANGEを1か所にまとめる
基本の書き方とアクセス許可は別シート・別ファイルを参照する方法にまとめています。
この記事は2026年9月9日時点の表示にもとづいています。

