Mihata
仕事効率化(DX)2026.09.13

スプレッドシートIMPORTRANGEが「読み込んでいます」で終わらない原因

結論:IMPORTRANGE が終わらない・#REF! になる原因は5系統

別のスプレッドシートからデータを引くのに IMPORTRANGE を使ったら、セルが「読み込んでいます...」のまま何分待っても変わらない。あるいは #REF! が出る。クリックすると「アクセスを許可」と出る。この3つは別々の不具合に見えますが、同じ関数の同じ流れの、どこで止まったかの違いです。

原因は次の5系統に整理できます。

  • ①アクセス許可がまだ承認されていない(#REF! /「アクセスを許可」が出る型)
  • ②数式の書き方が違う(URL・シート名・範囲文字列の指定ミス)
  • ③参照元が重い・取り込む量が多すぎる(「読み込んでいます...」が終わらない型の本命)
  • ④更新とキャッシュの挙動を誤解している(古い値のまま変わらない型)
  • ⑤IMPORTRANGE を同時に多数使っている(全部が遅い・たまに戻る型)

切り分けの順番も、この①→⑤のとおりでかまいません。①と②は数秒で判定でき、しかも一番多いからです。逆に、①②を飛ばしていきなり参照元の軽量化を始めると、丸一日かけて何も直らないことになります。

まず1分で確認する3点

手を動かす前に、次の3点だけ確認してください。ここで原因が半分くらいは決まります。

  1. セルの中身は何色で、何と出ているか#REF! なら①か②、「読み込んでいます...」のままなら③か⑤、値は出ているが古いなら④です。
  2. そのセルをクリックして、ポップアップに「アクセスを許可」ボタンがあるか:あれば①で確定です。押すだけで終わります。
  3. 参照元のシートを自分で開けるか:開けないなら、数式の問題ではなく共有そのものの問題です。先に参照元のオーナーに共有してもらってください。

この段階では数式を書き換えないでください。IMPORTRANGE は数式を編集し直すと許可待ちの状態がリセットされ、直前まで来ていた読み込みが最初からやり直しになります。焦って何度も書き直すのが、いちばん時間を溶かすパターンです。

原因別の対処5手順

手順1:アクセス許可を承認する(#REF! /「アクセスを許可」)

IMPORTRANGE は、参照元のシートに対して明示的な承認を1回求める仕様です。Google公式ヘルプは「新しいソースシートから読み込み先のシートに最初にデータを読み込むときに、アクセスを許可するよう求めるメッセージが表示されます」と書いており、自分がオーナーのシートでも最初は #REF! が出て「アクセスを許可」をクリックする必要があります(IMPORTRANGE|Google公式ヘルプ)。

つまり「最初の #REF! は正常」です。バグではありません。セルを選択し、表示されるポップアップの[アクセスを許可]を押せば読み込みが始まります。

ここで押さえておきたい注意が3つあります。

  • 許可は「範囲」ではなく「ファイル同士」に対して与えられる:公式ヘルプは、一度許可すると読み込み先のスプレッドシートの編集者は誰でも、参照元のどの部分でも IMPORTRANGE で取得できるようになる、と明記しています。A列だけ許可する、という切り方はできません。
  • この許可は共有ユーザー600人の上限にカウントされる:公式ヘルプに記載があります。IMPORTRANGE を無数のシートから張っている運用では、ここが効いてきます。
  • 参照元で「ダウンロード、印刷、コピーのオプションを無効にする」がオンだと、新しい IMPORTRANGE 数式は使えません(公式ヘルプに明記)。機密シートを参照しようとして必ず失敗する場合は、まずここを疑ってください。

また、自分が参照元のオーナーでない場合は「そのシートにアクセスする権限がありません」という趣旨のメッセージになり、自力では解決できません。参照元のオーナーに閲覧権限をもらうところからです。共有そのもので詰まっているなら、「権限がありません」と出て共有できない時の対処を先に読んでください。

切り分け:[アクセスを許可]を押しても数分後にまた #REF! に戻るなら、原因は許可ではありません。手順2の数式の書き方へ進んでください。

手順2:数式の書き方を1文字ずつ見直す

公式の構文は IMPORTRANGE(スプレッドシートのURL, 範囲の文字列) です(IMPORTRANGE|Google公式ヘルプ)。よくある間違いは次のとおりです。

  • URL を引用符で囲んでいない:URL はダブルクォートで囲むか、URLが入ったセルを参照する必要があります。直貼りは通りません。
  • 範囲の文字列を引用符で囲んでいない"シート1!A2:B6" のように、シート名と範囲をまとめて1つの文字列にします。シート1!A2:B6 と裸で書くと、読み込み先のシートの参照として解釈されて崩れます。
  • シート名の実体が違う:タブの表示名にスペースや全角が混ざっている、後から改名した、といったケース。シート名にスペースがあるならシングルクォートで囲みます(例:"'売上 2026'!A:D")。
  • URL に余計な部分が付いている#gid=0/edit?usp=sharing が付いていても動くことが多いですが、確実にしたいならスプレッドシートIDの部分までにします。
  • 参照元のシートが削除・改名されている:タブを消しただけで数式は残ります。

もうひとつ、見落としがちなのが揮発性関数の制限です。公式ヘルプは、IMPORT 系の関数は NOWRANDRANDBETWEEN を含むセルを直接・間接に参照できず #ERROR! になると明記しています(TODAY は例外)。参照元の範囲にタイムスタンプを NOW() で入れていると、範囲ごと引けなくなります。値を固定するか、範囲から外してください。

切り分け:同じ参照元に対して IMPORTRANGE("URL","A1") だけの単純な数式を別セルに書いて、それが通るかを見てください。通るなら原因は書き方(または範囲の広さ)、通らないなら許可か参照元側の問題です。この1本を書く手間が、いちばん早い切り分けになります。

手順3:取り込む量を減らす(「読み込んでいます...」が終わらない本命)

許可も書き方も問題ないのに終わらないなら、ほぼ取り込む量です。IMPORTRANGE はインターネット越しにデータを取りに行く関数で、シート内の計算とは負荷の桁が違います。

公式に明記されている数値は2つあります。

効く対処は、Google自身が案内している「向こうで集計してから、結果だけを渡す」です。公式ヘルプは、100万行の合計が欲しいなら、参照元のシートで合計してから IMPORTRANGE でその1つの値を取るほうが、100万行を全部転送してから合計するより速い、という例を挙げています(データの取り込みを最適化する方法|Google公式ヘルプ)。具体的には次のようにします。

  • 列を絞る"A:Z" をやめ、本当に使う "A:D" だけにする。
  • 行を絞る"A:D" のような非限定範囲は、空白セルも含めて全行が読み込まれます。"A1:D5000" のように上限を切る。
  • 参照元側で集計する:参照元に集計用タブを1枚足し、そこを IMPORTRANGE する。1行でも数十行でも、生データ数万行より圧倒的に軽い。
  • QUERY で包む前に、まず範囲を狭めるQUERY(IMPORTRANGE(...), "select ...") は、絞り込む前に全部を持ってきてから絞ります。持ってくる量は減りません。

切り分け:範囲を "A1:D10" まで縮めても「読み込んでいます...」が終わらないなら、量の問題ではありません。手順5の同時多数使用か、参照元ファイルそのものが重い状態です。参照元が重いならスプレッドシートが重い・開かない時の原因と軽くする対処を先に片付けてください。

手順4:更新のタイミングを理解する(値が古いまま変わらない)

「エラーは出ていないが、参照元を直したのに反映されない」という相談は、多くが仕様どおりの挙動です。公式ヘルプによると、IMPORTRANGE はドキュメントを開いたときにデータを再読み込みし、ユーザーがドキュメントを開いている間は1時間ごとに自動的に更新を確認しますIMPORTRANGE|Google公式ヘルプ)。つまり、開きっぱなしの画面を眺めていても、最大1時間は古い値のままでありえます。

手早く更新したいときの実務的な手は次のとおりです。

  • 読み込み先のタブをいったん閉じて開き直す:もっとも確実で、副作用もありません。
  • 数式をわずかに書き換えて確定し直す:範囲を1行広げて戻す、など。ただし再度の読み込みが走るので、重い範囲では逆効果です。
  • 参照元と読み込み先の両方を開いてから確認する:公式ヘルプは、参照元が更新されると、開いている読み込み先のドキュメントが更新される、と説明しています。

なお、「何秒でタイムアウトするか」「読み込み中の表示が何分続いたら異常か」は公式に明記がありません。5分待って変わらなければ異常、といった基準は公式の裏付けがないため、本記事でも断定しません。判断材料として使えるのは、あくまで「範囲を極端に狭めた数式は通るのか」という手順2・3の切り分けのほうです。

切り分け:開き直しても値が古いままなら、更新の問題ではなく参照元の値そのものが変わっていないか、参照している範囲がずれています。

手順5:IMPORTRANGE の本数と連鎖を減らす

1つ1つは軽いのに、ファイル全体が常に「読み込んでいます...」だらけ——という場合は、本数の問題です。公式ヘルプは、IMPORT 系関数が多すぎてトラフィックが過大になると「リクエスト数が多いためデータの読み込みに時間がかかる可能性があります」というメッセージが出ると説明しています(IMPORT 関数について|Google公式ヘルプ)。

さらに公式は、設計として次の2つを避けるよう案内しています(データの参照を最適化してスプレッドシートのパフォーマンスを上げる|Google公式ヘルプ)。

  • チェーン(連鎖)を制限する:AがBを、BがCを IMPORTRANGE する構成。参照元が更新されてから末端に届くまでの遅延が積み上がります。
  • サイクル(循環)を避ける:AがBを参照し、BもAを参照する構成。公式が名指しで避けるよう書いています。

減らし方は3つです。(a) 同じ参照元から何本も引いているなら、1本にまとめて中継タブに落とし、シート内では通常の参照で引く。(b) 参照元側で集計して本数そのものを減らす。(c) 変わらない過去データは IMPORTRANGE をやめ、値として貼り付けて固定する。公式ヘルプも、静的で確定したデータはシート内に直接持つほうが速い、としています。

なお「1ファイルに置ける IMPORTRANGE の本数の上限」は公式に明記がありません。「50本まで」といった数字が出回っていますが、Google公式ヘルプに該当する記載は見当たらないため、ここでは断定しません。確実に言えるのは、本数が増えるほど遅くなり、上のメッセージが出やすくなるということだけです。

毎週のように起きるなら、シートの使い方が限界に来ている

ここまでの手順で目の前の1本は直ります。ただ、IMPORTRANGE を何本も連ねてシート同士を繋いでいる状態は、スプレッドシートをデータベースの代わりに使っている状態です。マスタがあり、明細があり、集計があり、それを関数で結合している——それは設計としてはデータベースの仕事で、シートはその役を担う前提で作られていません。

だからこの構成は、次のような形で毎週壊れます。誰かが参照元の列を1つ挿入して全部ずれる。タブ名を変えて #REF! になる。行が増えて読み込みが終わらなくなる。人が増えて、複数人で使うスプレッドシートが壊れる問題と合流する。同期そのものが詰まれば「変更内容を同期できません」にもなります。関数を直すたびに、翌週また別の場所が落ちるなら、直しているのは症状であって原因ではありません。

正直なところ、IMPORTRANGE が3本までなら、直して使い続けるほうが安上がりです。判断が変わるのは、本数が二桁に届いたときや、毎週誰かが「数字が出てこない」と言いに来るようになったときだと考えています。その段階では、シートをデータの置き場として残したまま、入力と表示だけを別の画面に切り出すほうが手数は減ります。

とはいえ、乗り換えどきの線引きは会社によってまったく違います。IMPORTRANGE の本数だけで決められるものではなく、更新の頻度、触る人数、間違えたときの影響の大きさで変わります。スプレッドシート管理の限界で、どこからがシートの守備範囲を超えるのかを整理しているので、判断材料として読んでみてください。いずれにしても、まずは目の前の1本を手順1〜5で直すのが先です。

よくある質問

IMPORTRANGE で最初に #REF! が出るのは故障ですか?

故障ではありません。Google公式ヘルプによると、新しい参照元から最初にデータを読み込むときはアクセスを許可するよう求められ、自分がオーナーのシートでも一度 #REF! が表示されます。セルをクリックして[アクセスを許可]を押せば読み込みが始まります。

「読み込んでいます...」が終わりません。何分待てばいいですか?

待つべき時間は公式に明記がありません。時間で判断するより、範囲を A1:D10 程度まで狭めた数式を別セルで試してください。それが通るなら取り込む量の問題、通らないならアクセス許可か数式の書き方の問題です。

IMPORTRANGE で取り込めるデータ量に上限はありますか?

Google公式ヘルプは、1リクエストあたりの受信データが10MBを上限としていると記載しています。またスプレッドシート1ファイル自体も1,000万セルまたは18,278列が上限です。列と行を必要な分だけに絞り、可能なら参照元側で集計してから結果だけを取り込むのが公式に案内されている方法です。

参照元を更新したのに読み込み先が変わりません。

仕様どおりの可能性が高いです。公式ヘルプによると、IMPORTRANGE はドキュメントを開いたときに再読み込みし、開いている間は1時間ごとに更新を確認します。急ぐ場合は読み込み先のタブを閉じて開き直すのが確実です。

1つのファイルに IMPORTRANGE は何本まで置けますか?

本数の上限はGoogle公式ヘルプに明記がありません。ただし公式は、IMPORT 系関数が多いと「リクエスト数が多いためデータの読み込みに時間がかかる可能性があります」と表示されること、複数シートにまたがる連鎖を制限し循環を避けることを案内しています。本数が増えるほど遅くなる前提で設計してください。

まずはお気軽にご相談ください

AI・IT・デザインに関するお悩みやご相談、お見積りのご依頼など、
どんなことでもお気軽にお問い合わせください。

お問い合わせ