Excelには多くの便利な関数がありますが、その中でも「INDIRECT(インダイレクト)」関数は一見すると難解に思えるかもしれません。
しかしこの関数をマスターすると、セル参照を柔軟にコントロールできるようになり、データ分析やテンプレート作成が格段に効率化されます。
この記事では、INDIRECT関数の基本的な使い方から応用例、注意点までを丁寧に解説します。
Excelをさらに便利に使いたい方や、関数を使った自動化に興味がある方は、ぜひ参考にしてください。
INDIRECT関数とは?
INDIRECT関数は、文字列として指定された参照をセル参照として認識させる関数です。
たとえば、=INDIRECT("A1")
と入力すると、セルA1の値を参照します。
通常のセル参照は固定ですが、INDIRECT関数を使うことで、文字列や他のセルの値をもとに参照先を動的に変更できるのが最大の特徴です。
構文
=INDIRECT(参照文字列, [a1])
- 参照文字列:参照したいセルや範囲を文字列として指定します。
- [a1]:省略可能。A1形式(TRUE)かR1C1形式(FALSE)かを指定します。通常は省略またはTRUEでOKです。
基本的な使い方
例1:セルA1の値を参照する
=INDIRECT("A1")
この式は、直接=A1
と入力するのと同じ結果になります。
例2:セルに入力されたセル番地を使う
たとえば、セルB1に「C3」と入力しているとします。
その場合、
=INDIRECT(B1)
と入力すれば、C3の値を取得します。
このように、文字列としてセル番地を指定できるのがINDIRECTのポイントです。
列や行を動的に切り替えるテクニック
INDIRECT関数は、他の関数と組み合わせることで真価を発揮します。
たとえば、ROW
やCOLUMN
、ADDRESS
、TEXT
などと組み合わせることで、自動的にセル範囲を切り替えるような使い方が可能です。
例1:行番号を指定してセルを動的に指定する
=INDIRECT("A" & ROW())
これは、「A列の自分がいる行」を参照する式になります。
例2:列番号を数式で切り替える
excelコピーする編集する=INDIRECT(CHAR(64 + 列番号) & "1")
たとえば、列番号が2であれば「B1」となります。
ただし、アルファベット列名を扱う場合は、CHAR
の制限(A〜Zまで)に注意が必要です。
別シートを参照する
INDIRECT関数を使えば、別のシート名を文字列として扱い、参照先を変えることも可能です。
例:シート名がセルB1にある場合
=INDIRECT("'" & B1 & "'!A1")
- B1に「Sheet2」と入力されていれば、「Sheet2」のA1セルを参照します。
- シート名にスペースがある場合は
'
(シングルクォーテーション)で囲う必要があります。
名前付き範囲を参照する
INDIRECT関数では、**名前付き範囲(Named Range)**も文字列で指定することができます。
例
名前付き範囲「売上表」が存在する場合、
=INDIRECT("売上表")
とすることで、その範囲を参照できます。
さらに応用すれば、リストから選んだ値をもとに範囲を切り替える「動的なリスト参照」などにも活用可能です。
応用例:月別データの自動参照
月別のシートに売上データがある場合に、選択した月によって参照先を変えるような仕組みも作れます。
シート構成例
- Sheet1:月選択(A1に「4月」など)
- 4月、5月、6月…のような月別シート
参照式
=INDIRECT("'" & A1 & "'!B2")
これで、A1に「4月」と入力されていれば、「4月」シートのB2セルを取得できます。
複数のテンプレートを使いまわしたいときに便利なテクニックです。
INDIRECT関数の注意点
INDIRECT関数は便利ですが、使う際にはいくつかの注意点があります。
1. 参照先が正確でないとエラーになる
文字列で参照先を組み立てる関係上、スペルミスやシート名の誤りなどで#REF!
エラーが発生しやすいです。
2. セルの移動やコピーに弱い
通常のセル参照は自動的に調整されますが、INDIRECT関数で指定した参照は固定のままになります。
行や列を挿入しても参照がずれることはありません(これはメリットでもありますが)。
3. 他ブックの参照には使えない
INDIRECT関数は、参照先のブックが開かれていないと機能しません。
外部ファイルへのリンクには向いていないため注意が必要です。
INDIRECT関数の代替手段は?
動的な参照には、INDEX
やCHOOSE
、OFFSET
関数でも対応できる場面があります。
特に大量データを扱う場合は、INDIRECT関数は計算が重くなる傾向があるため、必要に応じて使い分けましょう。
まとめ
INDIRECT関数は、セル参照を動的に制御できる非常に強力な関数です。
うまく使いこなせば、1つのテンプレートで複数のデータセットを扱ったり、ユーザー選択に応じた動的表示が可能になります。
ただし、構文のミスによるエラーや、外部参照の制限、計算の重さといった注意点もあるため、用途と目的に応じて活用することが大切です。
ぜひこの記事を参考に、INDIRECT関数を業務や資料作成に役立ててください。