Excelでデータを柔軟に扱うために欠かせないのが「INDIRECT関数」です。
なかなか目にする機会も少なく、一見すると難しそうなこの関数ですが、実は上手に使うことができれば、シート間の参照や動的なセル指定が可能となり、実務効率を大きく向上させることが可能です。
本記事では、INDIRECT関数の基本的な使い方から、業務で役立つ活用事例までを丁寧に解説します。普段から基本の関数は使っていて、さらにExcelを使いこなしていきたいという中級者以上の方にとって、おすすめの内容です!
INDIRECT関数とは?

INDIRECT関数は一言で言うと、「文字列として指定したセル参照を、実際の参照として解釈する」関数です。
ちょっと言葉にすると難しいですね。。具体的な使い方は後ほど解説していきますが、取り急ぎの基本情報としては下記の通りです。
INDIRECT(参照文字列, 参照形式)
- 参照文字列:セル参照を文字列で指定します。たとえば "A1" や "Sheet2!B3" など。
- 参照形式:省略可能。TRUEならA1形式、FALSEならR1C1形式で解釈されます(通常はTRUEでOKです)。
基本的な使い方
まずは基本的な使い方について確認しましょう。
例えば、A1セルに「こんにちは」と入力されているとします。

このとき、他のセルに次のような数式を作ると、A1の値を取得できます。
=INDIRECT("A1")

基本の使い方はこれだけで決して難しくありませんが、肝心の「何の役に立つの?」という部分が分からないので、その辺りについてこれから解説していきます。
実務で使えるINDIRECT関数の活用事例
INDIRECT関数は実務では主に、別シートを参照するときに使用されます。いくつか例をご紹介します。
月次シートの参照
複数の月次シート(例:1月、2月、3月など)がある場合、それぞれの売上合計を動的に参照したいときにINDIRECT関数が役立ちます。
例えば、商品A・B・Cについて月ごとに売上実績があり、シートで分かれているとします。

そして、「まとめ」シートに商品ごとの売上を記入していきたいとします。

もちろんイコールでつなげれば、各シートから情報をとってくることができますが、INDIRECT関数を使えばA列に記入されている月度の値を活用して効率化することができます。

数式のシート名のところをINDIRECT関数でA列を指定するようにしてあげると、同じことを実現することができます。

このようにすれば、2月・3月の部分も1つ1つイコールでつながなくても、数式のコピーで対応することができます。

こちらの内容は、下記の動画でも解説しています。
部署シートの参照
部署ごとに別々の表がある場合(例:営業部、総務部、開発部など)、プルダウンで選んだ部署の表から情報を取り出す方法にもINDIRECT関数を使うことができます。
設定例:
- データの入力規則を使用し、A列にプルダウンで部署名を選べるようにする

- B列に、INDIRECT関数でA列の名前を参照するような数式を入力しておく

上記のような設定をすれば、リストから部署を選べば、対象シートの合計売上金額を表示されるようにすることができます。

名前付き範囲を動的に指定
名前付き範囲を活用してデータを管理している場合にもINDIRECT関数を使うと便利です。
設定例:
「東京」など、名前付き範囲を用意

セルに名前付き範囲の名称を入力(今回の場合「東京」)

INDIRECT関数の数式を入力

A1に入力した名前付き範囲の合計を求めることができます。

INDIRECT関数を使うときの注意点
- エラー処理を工夫する:
参照先が存在しない場合、#REF!
エラーになります。エラー表示を避けたい場合、IFERROR
関数と組み合わせておくと良いです。

- パフォーマンスに注意:
大量のINDIRECT関数を使うと、計算速度が遅くなることがあります。特に大規模ファイルでは注意が必要です。
まとめ
