IMPORTRANGE関数の使い方|別のスプレッドシートからデータを読み込む

執筆者:

カテゴリ:

IMPORTRANGEは、別のスプレッドシートファイルからデータを読み込む関数です。

同じファイル内の別シートなら =Sheet2!A1 で参照できますが、ファイルが別だとこれができません。そこで使うのがIMPORTRANGEです。

書式

=IMPORTRANGE("スプレッドシートのURLまたはキー", "シート名!範囲")
引数 内容
第1引数 読み込み元ファイルのURL全体、またはキー部分だけ
第2引数 "シート名!A1:D100" の形式。必ずダブルクォートで囲む

第2引数をクォートで囲み忘れるのが最頻出のミスです。参照ではなく文字列として渡します。

基本の使い方

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1AbC.../edit", "売上!A1:D100")

URLはブラウザのアドレスバーからそのまま貼り付けて構いません。/d//edit の間のキー部分だけでも動きます。

=IMPORTRANGE("1AbC...", "売上!A1:D100")

キーだけのほうが数式が短く、URLの形式変更にも強いので、慣れたらこちらを推奨します。

初回はアクセス許可が必要

数式を入れた直後は #REF! になり、セルにカーソルを合わせると「アクセスを許可」ボタンが出ます。これを押すまでデータは読み込まれません。

  • – 許可はファイルの組み合わせごとに1回だけ必要です
  • – 押した人ではなく、ファイル同士の接続として記録されます
  • – 読み込み元ファイルへの閲覧権限が自分に無いと、許可ボタンを押しても失敗します

共有相手が見られない、という相談の大半はここが原因です。読み込み元ファイルの共有設定を確認してください。

範囲の書き方

シート名だけを指定すると、そのシート全体を読み込みます。

=IMPORTRANGE("1AbC...", "売上")

行が増えても自動で追従するので便利ですが、不要な列まで読み込むと重くなります。必要な範囲を絞るのが基本です。

列全体の指定もできます。

=IMPORTRANGE("1AbC...", "売上!A:D")

他の関数と組み合わせる

IMPORTRANGEは範囲を返すので、そのまま他の関数に渡せます。

条件で絞って読み込む

=FILTER(IMPORTRANGE("1AbC...", "売上!A2:D1000"),
        IMPORTRANGE("1AbC...", "売上!C2:C1000") = "東京")

同じIMPORTRANGEを2回書く必要があるのが冗長ですが、これが標準的な書き方です。

QUERY と組み合わせると、より読みやすくなります。

=QUERY(IMPORTRANGE("1AbC...", "売上!A1:D1000"), "select Col1, Col4 where Col3 = '東京'", 1)

IMPORTRANGE経由のデータは列名が Col1, Col2... になる点に注意してください。A, B, C では指定できません。

検索に使う

=XLOOKUP(A2, IMPORTRANGE("1AbC...", "マスタ!A:A"), IMPORTRANGE("1AbC...", "マスタ!B:B"))

商品マスタを別ファイルで一元管理する、といった運用ができます。

重くなったときの対処

IMPORTRANGEはファイルを開くたびに読み込みが走ります。数が増えると読み込み待ちが長くなります。

対策は次の3つです。

1. 数式の数を減らす

同じファイルから何度も読むなら、専用のシートを1枚作ってそこに1回だけIMPORTRANGEを書く。他の数式はそのシートを参照します。これが最も効果があります。

2. 範囲を絞る

A:Z ではなく A:D。使わない列は読み込まない。

3. 読み込み側で集計しない

読み込んでから重い集計をするのではなく、読み込み元のファイルで集計を済ませ、結果だけを読み込む。転送量が桁違いに減ります。

エラーの対処

#REF! が出る

原因は主に3つです。

  • アクセス許可を押していない → セルにカーソルを合わせてボタンを押す
  • 読み込み元への閲覧権限がない → 共有設定を確認する
  • シート名が違う → スペル、全角半角、末尾スペースを確認する

#ERROR! が出る

第2引数がクォートで囲まれていません。

=IMPORTRANGE("1AbC...", 売上!A1:D100)     ← 誤り
=IMPORTRANGE("1AbC...", "売上!A1:D100")   ← 正しい

「読み込んでいます…」から進まない

読み込み元が大きすぎるか、IMPORTRANGEの数が多すぎます。範囲を絞ってください。一時的なものなら、しばらく待つか再読み込みで解消することもあります。

循環参照になる

ファイルAがファイルBを読み、ファイルBがファイルAを読むと止まります。参照は一方向にしてください。

注意しておきたいこと

書式は引き継がれません。 値だけが読み込まれます。色や罫線は反映されません。

元ファイルが削除・権限変更されると壊れます。 共有ドライブから個人ドライブへの移動でも切れることがあります。重要な集計をIMPORTRANGEに依存させる場合は、この点を念頭に置いてください。

まとめ

  • – 書式は =IMPORTRANGE("URLまたはキー", "シート名!範囲")
  • 第2引数はダブルクォートで囲む
  • – 初回はアクセス許可のボタンを押す
  • #REF! の多くは権限かシート名
  • – 読み込み用シートを1枚作ると軽くなる

関連する関数

  • QUERY — 読み込んだデータを抽出・集計する
  • FILTER — 条件で行を絞る
  • XLOOKUP — 別ファイルのマスタを検索する
  • INDIRECT — 同一ファイル内の動的参照
  • 関数一覧に戻る

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です