Excelで「セルA1を参照したい」と思ったとき、ふつうは =A1 のようにセルを直接指定するでしょう。
しかし、場合によっては「セルの位置(例:A1)を文字列として別セルに書いておき、その文字列に基づいて値を取得したい」というケースが出てきます。
たとえば、セルA1 に「Sheet2」と書いておき、その内容をもとに Sheet2のA1 の値を取得したい場合。このようなケースで活躍するのが、INDIRECT(インダイレクト)関数です。
INDIRECT関数とは?
INDIRECT は、「指定された文字列をセル参照として解釈してくれる関数」です。
構文:
=INDIRECT(参照文字列, [参照形式])- 参照文字列:セルのアドレスを文字列として指定(例:
"A1"やB1に格納された"A1") - 参照形式:省略または
TRUEでA1形式(行は数字列は文字)、FALSEでR1C1形式(行も列も数字)
基本の使い方:文字列「”A1″」を使ってセルA1を参照する
例1:セル B1 に “A1” と入力し、その文字列をもとに A1 の値を取得する

=INDIRECT(B1)B1 の中身が "A1" のとき、INDIRECT(B1) は 「=A1」 と同じ意味になります。
具体的な使用方法の例
1. 参照先を動的に切り替えたい

セル A5 に 「Sheet1!A1」、A6 に 「Sheet2!A1」 といった文字列を入れて、INDIRECT でそれぞれのシートの A1を参照できます。
=INDIRECT(A5)このようにすると、セルの中身を変えるだけで参照先を変更できるため、集計シートの自動切替などに活用できます。
2. 数式を「構成」して使う
INDIRECT を使えば、関数や数式の一部をセルの内容で組み立てることができます。
例:行や列の数値からセル参照を作る
=INDIRECT("B" & 2) → B2 の値を返すここで「2」の部分が他のセル(例:C1 に「2」)にあるとき:
=INDIRECT("B" & C1)これで動的にセル位置をコントロールできます。
関連テクニック:文字列でシートとセルを指定する
シート名とセル位置を別々にして組み合わせることもできます。
=INDIRECT("'" & A1 & "'!" & B1)- A1 に
Sheet2 - B1 に
C3
上記のように設定すると、「Sheet2!C3」 のセルを参照します。
私がよくINDIRECT関数を使う状況例

上の画像のように、1月~12月でシートを分けておき、1月の売上や費用など月ごとに計算している場合、年次推移などまとめの作業のたびに各月の必要なデータを1つずつコピペするのは大変です。

例えば、1月~12月の全シートのB2にある売上額を年間推移にコピペする作業!めんどくさい!
そんな時には、年間推移シートのA列に、1月~12月の文字列を入れて、B列に以下をコピペしてください。
=INDIRECT(A2 & "!B1")すると、「=1月!B1」と同義になるので、1月のシートのB1を取得できます!そのままオートフィルすると2月、3月…と全ての売上が取得できます。


これで簡単にグラフが作れるね!
まとめ
「セルA1を文字列として指定して使いたい」というニーズにぴったり応えてくれるのが、INDIRECT関数です。
使い方を理解すれば、シート間の動的な参照やデータの統合が格段に便利になります。
最後にポイントをおさらいしましょう:
"A1"のような文字列をセルとして扱いたいなら=INDIRECT("A1")- 他セルにある
"A1"を参照するなら=INDIRECT(B1) - シート+セル指定も
"'" & A1 & "'!" & B1のように組み立てる - 動的集計・自動切替・再利用性の高い関数式に最適
- ただし、使いすぎはパフォーマンスや保守性の低下に注意
INDIRECTをマスターして、無駄なコピペ作業からおさらばしましょう!









コメント