Home / Microsoft / 【2026年最新版】ExcelのINDIRECT関数が機能しない・エラーになる原因と対処法【完全ガイド】

【2026年最新版】ExcelのINDIRECT関数が機能しない・エラーになる原因と対処法【完全ガイド】

※本ページにはプロモーション(広告)が含まれています

ExcelでINDIRECT関数を入力したのに「#REF!」「#NAME?」「#VALUE!」エラーが出て困っている方は多いはずです。INDIRECT関数はシートをまたぐ参照や動的な参照を実現できる強力な関数ですが、ちょっとした書き方の違いでエラーになりやすい関数でもあります。

この記事では、ExcelのINDIRECT関数がうまく動かない・エラーになる原因を徹底的に解説し、それぞれの対処法をわかりやすくまとめました。初心者の方でもすぐに実践できるよう、具体的な手順と例を使って説明します。

参照文字列の書式を確認する手順

📋 この記事でわかること

  • INDIRECT関数の基本的な仕組みと使い方
  • #REF! / #NAME? / #VALUE! エラーの原因と違い
  • 参照文字列の書式が正しくない場合の修正方法
  • シート名にスペースや記号が含まれる場合の対処法
  • 絶対参照・相対参照の正しい書き方
  • 循環参照エラーの解消方法
  • 計算方法の設定(自動・手動)の確認と変更方法
  • INDIRECT関数の実用的な活用例

INDIRECT関数とは?基本的な仕組みをわかりやすく解説

INDIRECT関数は、「文字列」として指定したセル参照先の値を返す関数です。通常の参照式「=A1」は直接セルを指定しますが、INDIRECT関数を使うと「セルの場所を示す文字列」を経由して間接的に値を取得できます。

たとえば、A1セルに「B2」という文字列が入っている場合、=INDIRECT(A1)と書くと、B2セルの値を取得できます。これが「間接参照(INDIRECT)」の名前の由来です。

INDIRECT関数の構文

=INDIRECT(参照文字列, [参照形式])
引数 説明 省略
参照文字列 参照したいセルのアドレスを文字列で指定(例:「A1」「Sheet2!B3」) 必須
参照形式 TRUE(またはA1形式)またはFALSE(R1C1形式) 省略可(TRUEが既定)

INDIRECT関数の基本的な使用例

数式 意味
=INDIRECT(“A1”) A1セルの値を返す
=INDIRECT(B1) B1セルに書かれている文字列(セル番地)の値を返す
=INDIRECT(“Sheet2!A1”) Sheet2のA1セルの値を返す
=INDIRECT(“‘売上データ’!B2”) 「売上データ」シートのB2セルの値を返す(スペースあり)

INDIRECT関数を使う場面

  • プルダウン連動:ドロップダウンリストで選択した値に応じて参照先を変える
  • シートをまたぐ集計:月ごとのシートからデータを動的に取得する
  • 名前付き範囲の動的参照:名前を文字列で指定して参照する
  • 行・列番号の動的指定:変数を組み合わせて柔軟な参照を作る

INDIRECT関数でエラーになる主な原因

INDIRECT関数のエラーは、大きく分けて以下の種類があります。それぞれのエラーコードは「何が問題か」を示すヒントになります。

エラーコード 主な原因 頻度
#REF! 参照先のシートが存在しない、セル範囲が無効 ★★★★★
#NAME? 関数名のスペルミス、名前付き範囲が存在しない ★★★☆☆
#VALUE! 参照文字列が正しい形式でない ★★★★☆
#CIRC 循環参照(自分自身を参照している) ★★☆☆☆
数式が更新されない 計算方法が「手動」に設定されている ★★★☆☆
シート名のスペースを確認する手順

対処法1:参照文字列の書式を正しく確認する

INDIRECT関数でもっとも多いエラーは、参照文字列の書式が正しくないことが原因です。文字列として渡すセル参照は、Excelが認識できる形式で書かれている必要があります。

よくある間違いと正しい書き方

NG(エラーになる) OK(正しい書き方) エラー種別
=INDIRECT(A1) =INDIRECT(“A1”) #REF! または #VALUE!
=INDIRECT(Sheet2!A1) =INDIRECT(“Sheet2!A1”) #NAME?
=INDIRECT(“1A”) =INDIRECT(“A1”) #REF!
=INDIRECT(“A1:B”) =INDIRECT(“A1:B5”) #REF!

修正手順

  1. INDIRECT関数が入力されているセルを選択します。
  2. 数式バーの内容を確認し、参照文字列がダブルクォーテーション(”)で囲まれているかチェックします。
  3. 変数を組み合わせる場合は、「"Sheet2!"&A1」のように&演算子で文字列を結合します。
  4. 列名(英字)が先、行番号(数字)が後になっているか確認します(「A1」が正しく、「1A」はNG)。

💡 ポイント:変数を組み合わせた参照文字列の書き方
行番号や列名を変数で指定したい場合は、=INDIRECT("A"&ROW()) のように文字列連結演算子(&)を使います。ROW()は現在の行番号を返すので、コピーしても自動的に行番号が変わります。

対処法2:シート名のスペース・記号に対応する(#REF!の解消)

シート名にスペースや記号(&、-、/ など)が含まれている場合、INDIRECT関数ではシート名をシングルクォーテーション(’)で囲む必要があります。これはExcelの仕様で、省略すると必ず #REF! エラーになります。

シート名の囲み方

=INDIRECT(“‘シート名’!セル番地”)

■ スペースなし → =INDIRECT(“Sheet2!A1”) ← シングルクォート不要
■ スペースあり → =INDIRECT(“‘売上 データ’!A1”) ← シングルクォート必須
■ 記号あり → =INDIRECT(“‘2026-04月’!A1”) ← シングルクォート必須

動的にシート名を指定する場合

B1セルにシート名を入力しておき、そのシート名を使って参照する場合は次のように書きます。

=INDIRECT(“‘”&B1&”‘!A1”)

B1に「売上データ」と入力されていれば、'売上データ'!A1として解釈されます。シート名にスペースや記号がある場合でも、シングルクォートで囲む形式にすれば安全です。

手順

  1. 参照したいシートのタブを右クリックし、シート名を確認します。
  2. シート名にスペース・記号・数字始まりが含まれていればシングルクォートで囲みます。
  3. 数式バーで修正し、Enter キーで確定します。
  4. #REF! が消えて正しい値が表示されることを確認します。

⚠️ 注意:シート名の大文字・小文字
Excelのシート名参照は基本的に大文字・小文字を区別しませんが、ファイルを他のアプリケーション(Google スプレッドシートなど)で開く際に問題が起きる場合があります。シート名は統一した表記にしておくことを推奨します。

対処法3:絶対参照と相対参照の使い分けを確認する

INDIRECT関数の中で使う参照文字列をセル参照(変数)から組み立てる場合、絶対参照と相対参照の考え方が重要になります。数式をコピーしたときに意図しないセルを参照してしまうのは、この設定の誤りが原因です。

絶対参照・相対参照の違い

種類 書き方(例) コピー時の挙動 使いどころ
相対参照 A1 コピー先に応じて変化 行ごとに参照先を変えたい時
絶対参照 $A$1 常に同じセルを参照 参照先を固定したい時
複合参照(列固定) $A1 列は固定、行は変化 列は変えず行のみ変えたい時
複合参照(行固定) A$1 行は固定、列は変化 行は変えず列のみ変えたい時

💡 INDIRECT関数特有の注意点
INDIRECT関数の参照文字列の中の「A1」や「B3」は、あくまでも文字列であり、Excelの通常の参照記号($)は機能しません。絶対参照・相対参照を実現したい場合は、INDIRECT関数の引数として渡す変数セルの参照方法($A$1 など)で制御します。

修正手順

  1. INDIRECT関数が入っているセルを選択します。
  2. 数式バーで、参照文字列を組み立てているセル参照(例:A1)を確認します。
  3. コピー時に参照先を固定したい場合は、そのセル参照をF4キーで絶対参照($A$1)に変換します。
  4. 意図通りの動作になっているかを確認しながら数式を調整します。

対処法4:循環参照エラーを解消する

循環参照とは、数式が最終的に自分自身のセルを参照してしまう状態です。INDIRECT関数では、参照文字列が自分自身のセル番地を含む場合に起きやすいエラーです。Excelはこの状態を検出すると警告を表示し、正しい計算ができなくなります。

循環参照の確認方法

  1. Excelのリボンから「数式」タブをクリックします。
  2. 「数式の検証」グループにある「エラーチェック」の▼をクリックします。
  3. 「循環参照」にカーソルを合わせると、循環参照が発生しているセルが表示されます。
  4. 表示されたセルをクリックすると、そのセルに移動できます。

循環参照の解消方法

  1. 循環参照が発生しているセルの数式を確認します。
  2. INDIRECT関数の参照文字列が、数式の入っているセル自身を指していないか確認します。
  3. 参照先を変更し、自分自身のセルを参照しない形に修正します。
  4. どうしても循環参照が必要な場合は、「ファイル」→「オプション」→「数式」→「反復計算を行う」にチェックを入れる方法もありますが、意図しない計算結果になる可能性があるため注意が必要です。

⚠️ 注意:反復計算の設定は慎重に
反復計算を有効にすると、意図しない無限ループが発生することがあります。基本的には循環参照自体を数式の設計で解消することを推奨します。

対処法5:計算方法の設定を「自動」に変更する

INDIRECT関数を含む数式の値が更新されない場合、Excelの計算方法が「手動」に設定されている可能性があります。計算方法が手動の場合、セルの値を変更しても数式が自動で再計算されません。

計算方法の確認と変更手順

  1. Excelのリボンから「数式」タブをクリックします。
  2. 「計算方法の設定」グループにある「計算方法の設定」ボタンをクリックします。
  3. 現在の設定が「手動」になっていれば、「自動」を選択します。
  4. すぐに再計算したい場合は、F9キー(全シート再計算)またはShift+F9(現在のシートのみ再計算)を押します。

設定のショートカット確認

操作 ショートカット 効果
全シート再計算 F9 ブック内の全シートを再計算
アクティブシートのみ再計算 Shift + F9 現在のシートのみを再計算
強制再計算(全ブック) Ctrl + Alt + F9 変更があるかどうか問わず強制的に再計算
計算方法を手動に切替 Ctrl + Alt + Shift + F9 依存関係を再チェックして計算

💡 計算方法が「手動」になる原因
計算方法は最後に保存したブックの設定が引き継がれることがあります。「手動」設定で保存されたブックを開くと、他のブックも「手動」になってしまうケースがあります。複数のブックを開いて作業する場合は注意してください。

INDIRECT関数の活用例一覧表

INDIRECT関数をマスターすると、Excelでできることが大幅に広がります。代表的な活用例をまとめました。

循環参照を確認する手順
活用シーン 数式の例 効果・メリット
プルダウン連動参照 =INDIRECT(A1) A1に名前付き範囲名を入力すると、その範囲を動的に参照できる
月別シート集計 =INDIRECT(“‘”&B1&”‘!C5”) B1に月名を入力するだけで対象シートの値を取得
行番号の動的参照 =INDIRECT(“A”&ROW()) 数式を下にコピーするたびにA列の参照行が変わる
名前付き範囲の参照 =SUM(INDIRECT(C1)) C1に範囲名を入力するだけでSUM対象を切り替えられる
2段階プルダウン =INDIRECT(B2) 大カテゴリ→小カテゴリの連動ドロップダウンリストを実現
INDEX関数と組合せ =INDEX(INDIRECT(“‘”&D1&”‘!A:C”),E1,2) シート名と行番号を変数にしたINDEX参照
列の動的参照 =INDIRECT(CHA​R(64+A1)&”1″) A1に列番号を入力すると、対応する列の1行目を参照
VLOOKUP範囲の動的変更 =VLOOKUP(A1,INDIRECT(B1&”!A:C”),2,0) B1にシート名を入れるだけでVLOOKUP対象を切り替え

INDIRECT関数 × 他の関数との組み合わせ早見表

組み合わせ できること 難易度
INDIRECT + SUM 合計範囲を動的に変更 ★☆☆
INDIRECT + VLOOKUP 参照テーブルを動的に切り替え ★★☆
INDIRECT + INDEX/MATCH シートをまたぐ高度な検索 ★★★
INDIRECT + OFFSET 起点から可変範囲を参照 ★★★
INDIRECT + ADDRESS 行・列番号からセル参照を動的生成 ★★★
INDIRECT + データの入力規則 連動プルダウンリストの実現 ★★☆

🛒

この記事に関連するおすすめ商品

Excel関数 完全マスター本(2026年版)

約1,500円〜

INDIRECT関数を含む全関数を網羅。豊富な実例で即戦力に


🛒 Amazonで探す

Excel VBA/マクロ 入門書

約1,800円〜

INDIRECT関数を自動化に組み込む応用まで解説


🛒 Amazonで探す

Office 365(Microsoft 365 Personal)1年版

約14,900円/年

常に最新バージョンのExcelを使い続けられるサブスクリプション


🛒 Amazonで探す

※ 価格は変動します。最新価格はリンク先でご確認ください

よくある質問(FAQ)

Q1. INDIRECT関数で「#REF!」エラーが出ます。どうすればいいですか?

「#REF!」エラーは、参照先が存在しない場合に表示されます。主な原因は以下の通りです。

  • 参照しているシートが削除・名前変更されている
  • シート名にスペースや記号が含まれているのにシングルクォート(’)で囲んでいない
  • セル番地の形式が間違っている(例:「1A」ではなく「A1」)
  • 参照先のセル範囲が無効(例:列や行が存在しない)

まずシート名の確認、次に参照文字列の書式確認から順番にチェックしてみてください。

Q2. 他のブック(ファイル)をINDIRECT関数で参照できますか?

INDIRECT関数は現在開いているブック内のシートのみ参照できます。別のブックを参照する場合、そのブックをExcelで開いた状態であれば、=INDIRECT("[ブック名.xlsx]シート名!セル番地") という形式で参照できます。ただし、そのブックを閉じると「#REF!」エラーになります。別ブックの参照には、通常の数式リンクやPower Queryの利用を検討してください。

Q3. INDIRECT関数とOFFSET関数の違いは何ですか?

両方とも動的な参照を実現できますが、アプローチが異なります。

  • INDIRECT関数:文字列(テキスト)からセル参照を作る。シート名を変数にできる
  • OFFSET関数:基点セルから行・列のオフセット(距離)で参照先を決める。範囲サイズも動的に変更できる

シートをまたぐ参照はINDIRECT、同シート内で行・列をずらして参照したい場合はOFFSETが向いています。

Q4. INDIRECT関数で名前付き範囲を参照する方法を教えてください

名前付き範囲の参照は非常に簡単です。たとえば「商品リスト」という名前付き範囲がある場合、=INDIRECT("商品リスト") と書くだけで参照できます。セルに名前を入力して変数として使う場合は、=INDIRECT(A1)(A1に「商品リスト」と入力)という形で動的に切り替えられます。名前付き範囲は「数式」タブ→「名前の管理」で確認・設定できます。

Q5. ExcelのバージョンによってINDIRECT関数の動作が違いますか?

基本的な機能は変わりませんが、Microsoft 365(Excel 2021以降)ではスピル機能(複数セルへの自動展開)と組み合わせることができます。また、Excel for Mac(Macintosh版)でも動作しますが、ファイル形式によっては一部挙動が異なるケースがあります。古いバージョン(Excel 2010以前)ではINDIRECT関数自体は使えますが、XLOOKUP・DYNAMICARRAYなど新しい関数との組み合わせは使えません。

Q6. INDIRECT関数は再計算が遅いと聞きましたが、本当ですか?

はい、INDIRECT関数は「揮発性関数(Volatile Function)」のひとつで、Excelが何らかの変更を検知するたびに再計算されます。そのため、大量のデータが入ったブックで多用すると動作が重くなる原因になることがあります。INDIRECT関数の使用箇所を最小限にする、または計算が完了したらINDIRECT関数の結果を「値として貼り付け」する(Ctrl+Shift+V → 値)といった対策が有効です。

まとめ:INDIRECT関数のエラーを防ぐポイント

ExcelのINDIRECT関数は、使いこなせば非常に強力なツールですが、エラーが起きやすい関数でもあります。この記事で解説した対処法を振り返ってみましょう。

✅ INDIRECT関数エラー解消チェックリスト

  • 参照文字列がダブルクォーテーション(”)で正しく囲まれているか確認した
  • セル番地の形式が「列(英字)→行(数字)」の順になっているか確認した
  • 参照先のシートが存在し、シート名が正確に一致しているか確認した
  • シート名にスペース・記号が含まれる場合、シングルクォート(’)で囲んでいるか確認した
  • 変数を組み合わせる際、&演算子で文字列を正しく連結しているか確認した
  • 循環参照が発生していないか「数式」タブのエラーチェックで確認した
  • 計算方法が「自動」に設定されているか確認した(手動の場合はF9で再計算)
  • 大量データでの使用は最小限にし、処理が遅い場合は値貼り付けを検討した

INDIRECT関数のエラーのほとんどは、①参照文字列の書式ミス②シート名の囲み忘れで発生します。まずこの2点を確認するだけで、多くの問題が解決します。

本記事で紹介した対処法を参考に、INDIRECT関数を活用して Excelをより便利に使いこなしてください。他のExcel関数のエラーや操作でお困りの場合は、minto.techの関連記事もあわせてご覧ください。

Check Also

Excelのピボットテーブルキャッシュが更新されない対処法

【2026年最新版】Excelのピボットテーブルキャッシュが更新されない・データが古い原因と対処法【完全ガイド】

【2026年最新版】Excel …