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