この記事を読んでわかること
- INDIRECT関数で何ができるのかがわかる
- ExcelでのINDIRECT関数の使い方が学べる
- INDIRECT関数を使う際の注意点を知れる
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
-著者情報-
名前:Utatane
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
実演パソコンのスペック(ソフトやバージョンによっては、表示や結果が異なる場合があります)
- OS:Windows11 Home 64bit
- Excel:Microsoft Office Home and Business 2021
INDIRECT関数とは?
「INDIRECT」は、セルの参照先を動的に変更できるExcel関数です。
※参照についてはこちらの記事をご参考ください。
例えば「山田さん!」と呼ぶと、山田さんが来てくれますが、
「橋本さん!山田さん呼んできて!」というと橋本さんが山田さんを呼んできてくれます。
このように、直接呼ぶわけではなく、間接的に呼んでくるのがINDIRECT関数だと思ってください。
参照したいセルが山田さん、INDIRECTが橋本さんという感じでしょうか。
これなら自分で呼びに行かなくても、「橋本さん!鈴木さん呼んできて!」「橋本さん!山本さん呼んできて!」など、動的に変更することができます。
文章で説明してもピンと来ないかもしれませんので、早速INDIRECT関数の使い方を見ていきましょう。
ExcelでのINDIRECT関数の使い方
基本構文
▼INDIRECT関数の基本構文
=INDIRECT(参照先, [参照形式])
参照先は文字列で指定するか、文字列が表示されたセルを指定するのが一般的です。
第二引数である参照形式は省略可能です。
参照形式を省略した場合や「TRUE」を指定した場合は、A1形式(A3やC6など)でセルを参照します。
FALSEを指定した場合は、R1C1形式となります。
【R1C1形式とは?】
セルの参照方法の一つで、R(Row:行番号)とC(Column:列番号)でセルを指定します。
例えばR1C2なら、1行目の2列目なので「B1セル」といった具合です。
引数や返り値については、下記記事をご参考ください。
基本的な使い方
文字列からセルを参照
下図を見てください。

A1セルに「Utatane」という文字列が入っており、
B1セルに「INDIRECT関数」が入っています。
INDIRECT関数の第一引数で「A1セル」が参照されているように見えますが、「”(ダブルクォーテーション)」で囲われているので、これは文字列です。
INDIRECT関数は、第一引数に指定された文字列が参照先になります。
「”C1″」ならC1セルを参照し、「”D8″」ならD8セルを参照します。
これがINDIRECT関数の基本中の基本となりますので覚えておきましょう。
また、セル名ではない文字列を指定すると、下図のようにエラーが発生しますので注意が必要です。

セルの値を参照先に変換
下図を見てください。

A1セルに「Utatane」という文字列が入っています。
そしてC1セルにINDIRECT関数が入っており、B1セルを参照するように指定されておりますが、
なぜかC1セルには「Utatane」と表示されております。
これはB1セルに「A1」という文字列が入っているためで、
INDIRECTが参照したB1セルに「A1」という文字列があるおかげで、
最終的には「INDIRECT(B1)」が「INDIRECT(“A1”)」に変わります。
その結果、A1セルにある「Utatane」が表示されたというわけです。
B1セルが「D3」ならD3セルを参照し、「N6」ならN6セルを参照します。
このようにINDIRECT関数は、参照先を動的に変更できるというわけです。
少し複雑ですが、これがINDIRECT関数の特長ですので、覚えておきましょう。
応用例
文字列とセルを組み合わせて参照先を決定

上図のとおりにしてもA1セルを参照できます。
INDIRECT関数の引数に文字列の「A」とA2セルが指定されています。
A2セルには「1」が入っているため、INDIRECT関数の引数は、「A」&「1」となり、
A1セルが参照されるというわけです。
別シートを参照
前項の発展系で、セルの他にシート名を指定することで、別シートを参照することも可能です。

INDIRECT関数の引数は(”Sheet2!A1″)となり、「Sheet2」の「A1セル」を参照したことになります。
「Sheet2」の「A1セル」には「Utatane」という文字列が入っているため、
INDIRECT関数を使ったSheet1のA1セルは「Utatane」と表示されるわけです。

データ入力規制と連動
データの入力規則(プルダウンリスト)でシート名やセル範囲を選択肢にし、INDIRECTで参照先を切り替えることで、ユーザーが選んだ項目に応じた一覧を表示できます。
詳しくは下記記事をご参考ください。
INDIRECT関数の注意点
存在しないセルを参照するとエラーになる
引数に存在しないセル(AAAなど)を指定し参照しようとするとエラーが発生します。
参照先が削除されてもエラーにならない場合がある
A列を削除した場合、元々あったB列が新しくA列になります。
そのため「=INDIRECT(“A1”)」としていた場合、エラーが出ずに元々のB1を参照して違う値が表示される可能性があります。
大量に使用すると処理速度が低下する
INDIRECTはVolatile関数(引数に変化が無くても再計算される場合がある関数)のため、大量に使うと計算速度が低下することがあります。
最後に
ExcelのINDIRECT関数について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!