セル参照を簡単に切り替えられたらもっと効率的なのに…と思うことはありませんか?
そんなときに便利なのが【INDIRECT(インダイレクト)関数】です。
VLOOKUPやIF~がある程度わかってくるようになってきたらおそらく今度はこの辺りの関数に出会うと思います。
この記事では、INDIRECT関数の基本から、業務に使える具体例、注意点までを実務目線でわかりやすく解説します。
INDIRECT関数とは?
INDIRECT関数は、「文字列として指定されたセル番地や範囲名を、実際の参照に変換する」関数です。
たとえば、セル A1 に「りんご」と入力されているときに
=INDIRECT("A1")
とすれば、A1セルを参照したことになり、関数を入れたセルには 「りんご」と表示されます。
つまり、「セルの中にある文字列を、参照先として使う」ことで、
動的な表や柔軟な参照を実現できるのです。
以降にもう少し細かい説明を致します。
基本構文と使い方
INDIRECT関数の基本構文は以下のとおりです:
=INDIRECT(参照文字列, [A1参照形式])
引数 | 内容 |
---|---|
参照文字列 | セル番地や名前を文字列で指定(例: “B2”, “Sheet1!A1” など) |
A1参照形式(省略可) | TRUE なら A1 形式、FALSE なら R1C1 形式(通常は省略でOK) |
例1:セルに書かれた参照先を参照
A1に「りんご」と入力 → =INDIRECT("A1")
→ A1セルの値が表示される
よく使われる実務例
① 複数シートの同じセルを切り替えて参照したい
たとえば「1月」「2月」「3月」などの月別シートがあり、それぞれのB2セルに売上が記録されているとします。
セル A1 にシート名(例:「1月」)を入力し、以下のようにすれば、そのシートのB2セルを参照できます:
=INDIRECT("'" & A1 & "'!B2")
ポイント:シート名にスペースや日本語が含まれる場合は
'
(シングルクォーテーション)で囲みます。
② 行番号や列番号を動的に組み合わせたい
たとえば現在の行の「C列」を参照したい場合:
=INDIRECT("C" & ROW())
この関数を入れたセルと同じ行にあるC列を参照するようになるので
D2列に関数を入れた場合にはC2の100が返され
D3にした場合にはC3の数値を参照します。
③ 名前付き範囲を動的に切り替えたい
名前付き範囲「売上_1月」「売上_2月」などを用意し、A1セルに切り替えたい範囲名を入力すれば、
=SUM(INDIRECT(A1))
で、対象の範囲を切り替えながら合計できます。名前付き範囲「売上_1月」「売上_2月」などを用意し、A1セルに切り替えたい範囲名を入力すれば、
コピーする編集する=SUM(INDIRECT(A1))
で、対象の範囲を切り替えながら合計できます。
集計表を1つにまとめたいときなどに便利です。
注意点と落とし穴
INDIRECT関数は非常に便利ですが、いくつか注意点もあります。
❌ デメリット・落とし穴
注意点 | 内容 |
---|---|
計算が重くなる | 参照先が動的なため、再計算が頻発するとファイルが重くなることがある |
構造化テーブルに非対応 | Table形式の Table1[列名] のような参照には使えない |
シート名の誤記に弱い | 指定されたシートが存在しないと #REF! エラーになる |
実務応用アイデア
- 月別シートをまとめる「月次報告集計表」
- 入力値に応じて表示される「可変メニュー」
- シフト表や作業予定表で担当者別に切り替える仕組み
- INDIRECT関数×データ検証(ドロップダウン)との連動で選択肢を動的に変更(通称:連動リスト)
まとめ
INDIRECT関数は、Excelで**「参照先を自動で切り替える」**ときに非常に有効な関数です。
最初は少しとっつきにくいかもしれませんが、基本構文を押さえれば用途は広がります。
✅ ポイントのおさらい
- INDIRECT(“A1”) → A1セルを参照
- INDIRECT(“‘” & A1 & “‘!B2”) → A1セルに入力されたシート名のB2セルを参照
- INDIRECT(“C” & ROW()) → C列の現在の行を参照
- 名前付き範囲とも相性がよく、集計や分析に便利
実務でも、「毎月シート名が変わる」「入力内容で表示内容を変えたい」といったニーズにうまくハマる関数です。
ぜひ、あなたの業務でもINDIRECT関数を取り入れて、柔軟で効率的なExcel活用を目指してみてください!
コメント