【Excel】INDIRECT関数の使い方|セル参照を動的に切り替える方法

スポンサードリンク
Excel

この記事を読んでわかること

  • 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セルが参照されるというわけです。

別シートを参照

前項の発展系で、セルの他にシート名を指定することで、別シートを参照することも可能です。

別シートを参照1

INDIRECT関数の引数は(”Sheet2!A1″)となり、「Sheet2」の「A1セル」を参照したことになります。

「Sheet2」の「A1セル」には「Utatane」という文字列が入っているため、
INDIRECT関数を使ったSheet1のA1セルは「Utatane」と表示されるわけです。

別シートを参照2

データ入力規制と連動

データの入力規則(プルダウンリスト)でシート名やセル範囲を選択肢にし、INDIRECTで参照先を切り替えることで、ユーザーが選んだ項目に応じた一覧を表示できます。
詳しくは下記記事をご参考ください。

スポンサードリンク

INDIRECT関数の注意点

存在しないセルを参照するとエラーになる

引数に存在しないセル(AAAなど)を指定し参照しようとするとエラーが発生します。

参照先が削除されてもエラーにならない場合がある

A列を削除した場合、元々あったB列が新しくA列になります。
そのため「=INDIRECT(“A1”)」としていた場合、エラーが出ずに元々のB1を参照して違う値が表示される可能性があります。

大量に使用すると処理速度が低下する

INDIRECTはVolatile関数(引数に変化が無くても再計算される場合がある関数)のため、大量に使うと計算速度が低下することがあります。

スポンサードリンク

最後に

ExcelのINDIRECT関数について解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました