- 01.はじめに
- 02.この記事でできること
- 03.INDIRECT関数の基本構造を理解しよう
- 04.使い方の基本ステップを丁寧に解説
- 05.実務で使える!INDIRECT関数の活用例5選
- 06.INDIRECT関数と相性の良い関数たち
- 07.よくあるトラブルとその解決策
- 08.応用テクニックでさらに効率アップ
- 09.INDIRECT関数の代替手段はあるのか?
- 10.学んだことを仕事に活かすには?
- 11.まとめ|INDIRECT関数はビジネスExcelの武器になる
01.はじめに
Excelを日々使っていると、「同じような表を別の場所にも使いたい」「月ごとにシートを切り替えてデータを集計したい」と思ったことはありませんか?そのたびにセル参照を手動で変更していては、手間もミスも増えてしまいます。
そんなときに大活躍するのが INDIRECT関数 です。文字列で指定したセルやシートを動的に参照できるこの関数は、使いこなせれば業務効率が劇的にアップします。
しかし、INDIRECT関数は「とっつきにくい」「難しそう」と敬遠されがち。実際、仕組みや構文をしっかり理解していないと、思った通りに動いてくれないこともしばしばです。
本記事では、そんなINDIRECT関数を初級〜中級のExcelユーザーでもしっかり理解できるよう、構文の基礎から応用例、トラブル対処法までを丁寧に解説していきます。
Excelをもっと自在に使いたい、表やデータをもっと効率的に管理したいという方は、ぜひ最後まで読み進めてください。
次章では、このINDIRECT関数を学ぶことでどんなことができるようになるのかをご紹介します。
02.この記事でできること
INDIRECT関数は、Excelの中でも応用力の高い関数です。本記事を通じて、以下のような知識とスキルを身につけることができます。
INDIRECT関数の基本的な使い方がわかる
まずはINDIRECT関数の構文や仕組みをしっかり理解します。どんな場面でどのように使えるのかを、初心者にもわかる言葉で丁寧に解説します。
動的に参照先を切り替える方法が身につく
「月別シートを切り替えて集計したい」「選択肢に応じて表示内容を変えたい」そんなときに役立つのが、INDIRECT関数による動的なセル・シート参照です。具体的な使用例を多数紹介します。
実務で活かせる応用テクニックが学べる
名前付き範囲、プルダウンリスト、他関数との連携など、実務で役立つ活用例を通じて、より実践的なスキルを習得できます。
よくある失敗例とその回避法もわかる
INDIRECT関数でつまずきやすいエラーや落とし穴にも触れ、原因と対処法を丁寧に解説。安心して使いこなせるようになります。
記事を読み終える頃には、「こんなに便利だったのか!」と驚くはずです。Excelをもっと自由に、快適に使いこなしたい方は、このまま続きを読み進めてください。
03.INDIRECT関数の基本構造を理解しよう
INDIRECT関数の構文と仕組み
まずはINDIRECT関数の基本的な構文を確認しましょう。
=INDIRECT(ref_text, [a1])
- ref_text:参照したいセルや範囲を文字列で指定します。
- a1:省略可能な引数で、A1形式(TRUE)かR1C1形式(FALSE)かを指定します。通常は省略またはTRUEでOKです。
この関数の最大の特徴は、「文字列として書かれた参照」を実際のセル参照に変換してくれることです。
例えば、セルA1に「B3」という文字列が入力されているとき、=INDIRECT(A1)とすれば、B3セルの値を取得できます。
なぜ「文字列」で参照できるのか?
Excelでは通常、セル参照は数式の中で直接記述されます(例:=B3)。しかし、INDIRECT関数を使うことで、「B3」という文字列を読み取り、あたかもそれが数式に書かれているかのように扱えます。
つまり、「どのセルを参照するか」をユーザーが自由に動的に決めることができるのです。
他の関数と何が違うのか
他の関数(例えばVLOOKUPやSUMなど)は、セルや範囲を「直接的に」指定する必要があります。INDIRECT関数は、文字列として指定された参照先を読み解いてくれる点でユニークです。
この違いこそが、INDIRECT関数の応用力の高さを支えています。
次章では、INDIRECT関数を実際にどう使っていくのか、基本ステップを詳しく解説していきます。
04.使い方の基本ステップを丁寧に解説
文字列をセル参照に変える方法
INDIRECT関数の最も基本的な使い方は、文字列をセル参照に変換することです。
たとえば、セルA1に「C5」と入力されている場合、次のようにすればC5セルの値を取得できます。
=INDIRECT(A1)
このとき、INDIRECTは「C5」という文字列をセル参照として読み替え、C5の値を返します。
他シートのセルを動的に参照する
INDIRECT関数は、シート名も文字列として指定することができます。
例:セルA1に「売上_1月」、セルB1に「B2」と入力されている場合
=INDIRECT("'" & A1 & "'!" & B1)
これは、シート「売上_1月」のセルB2を参照するという意味になります。シート名にスペースや記号が含まれる場合は、必ずシングルクォーテーション(’)で囲む必要があることに注意してください。
名前定義(名前付き範囲)と組み合わせる
Excelでは、セル範囲に「名前」をつけることができます。例えば、範囲B2:B10に「売上_1月」という名前を定義した場合、次のように書けば、その範囲を参照できます。
=SUM(INDIRECT("売上_1月"))
さらに、参照する名前をセルから切り替える場合:
=SUM(INDIRECT(A1))
セルA1に「売上_2月」と入力されていれば、その名前付き範囲が集計対象になります。
この方法を使えば、「月別」「担当者別」など、柔軟にデータを切り替えるシートを簡単に構築できます。
次章では、実際の業務に役立つ具体的な活用例を紹介します。ここからがINDIRECT関数の本領発揮です。
05.実務で使える!INDIRECT関数の活用例5選
月別シートの売上データを集計する
毎月の売上を「1月」「2月」などシートに分けて管理している場合、INDIRECT関数を使えば参照先を1つの数式で切り替えることができます。
例:セルA1に「1月」、セルB1に「売上」と入力し、次のように記述します。
=INDIRECT("'" & A1 & "'!B2")
これで「1月」シートのB2セル、つまり売上データを取得できます。A1を「2月」に変えれば自動的に2月のデータを参照します。
プルダウンリストと連動させる
セルにドロップダウンリストを設定し、選択内容に応じて参照するデータを切り替える使い方も便利です。
例:データ検証機能で「Aさん」「Bさん」「Cさん」を選択肢に設定し、それぞれの名前付き範囲に売上データを設定した場合:
=SUM(INDIRECT(A1))
セルA1の選択に応じて、該当する担当者の売上を自動集計できます。
名前付き範囲の自動切り替え
範囲名をうまく活用すれば、月別や部署別など、状況に応じたデータ範囲を動的に参照できます。
例:「売上_営業部」「売上_開発部」といった名前を定義しておき、セルA1に「営業部」と入力して:
=SUM(INDIRECT("売上_" & A1))
部門名を変えるだけで、集計対象の範囲が自動で切り替わります。
帳票テンプレートを使い回す
複数のシートで同じテンプレートを使っている場合、INDIRECT関数を使えば1つのシートで状況に応じたデータを自動的に読み込めます。
セルA1で対象シート名を指定し、数式は以下のように書きます:
=INDIRECT("'" & A1 & "'!D10")
これにより、テンプレートをコピーしても、参照先を変えるだけでデータ表示が可能になります。
データ分析における柔軟なセル参照
分析レポートやダッシュボードで、条件に応じて表示する内容を切り替えたいときにもINDIRECTは有効です。
「月別」「商品別」「担当者別」といった選択肢をユーザーに選ばせ、INDIRECT関数を使って該当データだけを表示させる設計が可能です。
これにより、1つの表やグラフで複数の条件に対応したインタラクティブなシートが作成できます。
次章では、INDIRECT関数と特に相性のよい関数たちを紹介し、さらに使いこなしの幅を広げていきます。
06.INDIRECT関数と相性の良い関数たち
VLOOKUPやXLOOKUPとの連携
INDIRECT関数は、検索・参照系の関数との相性が抜群です。
たとえば、シート名を変数として指定しながらVLOOKUPを使いたい場合、次のように書きます:
=VLOOKUP("商品A", INDIRECT("'" & A1 & "'!A2:B100"), 2, FALSE)
セルA1に「1月」などのシート名が入力されていれば、そのシート内で「商品A」のデータを検索できます。
同様に、XLOOKUPでも以下のように使えます:
=XLOOKUP("商品A", INDIRECT("'" & A1 & "'!A2:A100"), INDIRECT("'" & A1 & "'!B2:B100"))
これにより、柔軟な検索が可能になります。
SUMやAVERAGEなど集計関数との組み合わせ
集計対象を動的に変えたいときにもINDIRECT関数は役立ちます。
たとえば、セルA1に範囲名「売上_3月」が入力されている場合:
=SUM(INDIRECT(A1))
これだけで、毎月の売上範囲を手動で切り替えずに合計が出せます。AVERAGE関数も同様です。
IF・IFERRORで安全性を高めるテクニック
INDIRECT関数は参照先が存在しないと#REF!エラーになります。これを回避するにはIFやIFERRORを組み合わせましょう。
=IFERROR(SUM(INDIRECT(A1)), "データなし")
このようにすれば、誤ったシート名や未定義の範囲でも、エラー表示を回避し見やすい表を保てます。
次章では、INDIRECT関数を使っていてよく起きるトラブルとその対処法を解説していきます。ここを押さえれば、安心してINDIRECTを使いこなせます。
07.よくあるトラブルとその解決策
#REF! エラーの原因と対処法
INDIRECT関数でもっともよく見かけるエラーが「#REF!」です。これは、指定した参照先が存在しない場合に発生します。
原因の例:
- 存在しないシート名を指定している
- 名前付き範囲が未定義
- スペルミス(「売上_1月」と「売上_1月」など)
対処法:
=IFERROR(INDIRECT(A1), "")
IFERRORを使えば、エラー時に空白や任意のメッセージを表示することで、表全体の崩れを防げます。
セルの構造が変わると動かない?
INDIRECT関数は、セルの挿入・削除によるセル位置の自動調整が「効かない」という特徴があります。つまり、参照先がずれても数式は変わらず、意図しないデータを取得してしまうリスクがあります。
これを防ぐには、名前付き範囲を活用するか、行列が固定されている場合はADDRESS関数などとの併用を検討しましょう。
INDIRECT関数の落とし穴(再計算・速度)
INDIRECT関数は「揮発性関数」と呼ばれ、何かシート上の値が変わるたびにすべて再計算されます。大量に使っていると、ブックの動作が重くなる可能性があります。
大量データや複雑なブックでは、INDIRECTの使用数を最小限に抑えたり、別の関数(INDEXやCHOOSE)との使い分けを検討することが重要です。
次章では、さらに一歩踏み込んだ応用テクニックを紹介します。ここまでできれば、あなたもINDIRECTマスターです。
08.応用テクニックでさらに効率アップ
INDIRECTとADDRESSを組み合わせる
ADDRESS関数を使うと、数値からセルの参照文字列を作ることができます。これをINDIRECTに渡せば、さらに柔軟なセル指定が可能です。
例:セルA1に行番号、B1に列番号が入っているとき
=INDIRECT(ADDRESS(A1, B1))
これで、任意の行列のセルを動的に参照できます。
INDIRECTとROW/COLUMNの動的参照
ROW関数やCOLUMN関数と組み合わせることで、位置に応じたセルの自動参照も可能です。
例:2列右のセルを参照したい場合
=INDIRECT(ADDRESS(ROW(), COLUMN()+2))
これにより、セルの位置に応じた参照が自動的に切り替わる柔軟な数式が作れます。
他のブックを参照する場合の注意点
INDIRECT関数は、参照先のブックが「開いている」状態でないと動作しません。これは大きな制限です。
例:別ブック「売上.xlsx」の「1月」シートを参照する数式は:
=INDIRECT("'[売上.xlsx]1月'!B2")
ただし、売上.xlsxが閉じているとこの数式は#REF!を返してしまいます。他ブックのデータを安定的に参照したい場合は、INDEXやPower Queryの利用も検討してください。
次章では、「INDIRECT関数の代替手段はあるのか?」という視点で、他関数との比較や役割の使い分けを紹介します。
09.INDIRECT関数の代替手段はあるのか?
CHOOSE関数との比較
CHOOSE関数は、引数の番号に応じて複数の選択肢から1つを選ぶ関数です。
=CHOOSE(2, A1, A2, A3)
これはA2の値を返します。INDIRECTのような動的参照も、あらかじめ選択肢が決まっていればCHOOSEでも可能です。
ただし、参照の柔軟性ではINDIRECTの方が上です。
INDEX関数との比較
INDEX関数は、行番号や列番号を指定して範囲内のデータを取り出す関数です。
=INDEX(B2:D4, 2, 1)
これはB3セルの値を返します。INDIRECTとは異なり、参照先のセル構造が変更されても追従できるという利点があります。
また、INDIRECTよりも処理が軽く、ブックが重くなりにくいです。
VBAとの使い分け
より複雑な条件や外部ファイルとの連携が必要な場合、VBA(マクロ)による制御も選択肢になります。
INDIRECTはノーコードで動的参照が実現できますが、再計算の負荷や制限があるため、大規模な業務用途ではVBAとの併用も視野に入れておくと良いでしょう。
次章では、実際にどんな場面でINDIRECT関数を使えば効果的なのか、仕事で活かす具体的なポイントを紹介します。
10.学んだことを仕事に活かすには?
どんな場面でINDIRECTを使えばいいのか
INDIRECT関数が特に力を発揮するのは、次のようなシーンです:
- 複数シートに分かれたデータの集計(例:月別・支店別・担当者別)
- ドロップダウンリストと連動した動的なデータ表示
- 帳票テンプレートやレポートの使い回し
「参照先を自由に切り替えたい」「一つの仕組みで複数の状況に対応したい」という業務ニーズがある場合、INDIRECTは強力な選択肢になります。
組織で共有する時の注意点
INDIRECT関数を含むファイルを他人と共有する際は、以下の点に注意しましょう:
- 参照先シートや範囲名の命名ルールを統一する
- エラー処理(IFERROR)を適切に入れる
- INDIRECT関数の再計算による動作遅延が出ないよう、使いすぎに注意する
また、シート構成や関数の意図を文書やコメントで明記しておくと、他の人が編集・運用しやすくなります。
今日から試せる実践的アドバイス
以下のような小さな一歩から、INDIRECT関数を実践に取り入れてみてください。
- 「月別シート+INDIRECT」で月次レポートの自動化
- 「名前付き範囲+INDIRECT」で部署ごとのデータ切り替え
- 「ADDRESS+INDIRECT」で柔軟なセル構成に対応
最初は手間に感じるかもしれませんが、一度覚えてしまえば作業時間が大きく短縮され、表の使い回しも格段に楽になります。
次章では、INDIRECT関数の学びを総括し、よくある疑問にも触れて締めくくります。
11.まとめ|INDIRECT関数はビジネスExcelの武器になる
本記事では、Excelの中でも応用力が高く、実務で非常に役立つ関数「INDIRECT」について、基本から応用まで丁寧に解説してきました。
INDIRECT関数の要点を振り返ろう
- 文字列として書かれたセルや範囲を参照できる
- シート名・名前付き範囲・アドレスを動的に扱える
- 検索関数や集計関数、IF/IFERRORなどとの相性が良い
- ミスや手動の修正を減らし、業務効率を大幅に向上させられる
明日から使える簡単Tips
- まずはセルに「B2」などの文字列を入れてINDIRECTで参照してみよう
- 名前付き範囲を活用して、データの切り替えを体験しよう
- 既存の月次報告書などに取り入れて、メンテナンスを楽にしよう
よくある質問とその答え
Q:INDIRECT関数を使うと重くなりますか?
A:はい。INDIRECTは揮発性関数なので、大量に使うとブックが重くなることがあります。必要最小限の利用にとどめましょう。
Q:閉じたブックのセルは参照できますか?
A:いいえ。INDIRECTは開いているブックにしか作用しません。外部参照には別の手法を使いましょう。
INDIRECT関数をうまく使えば、Excelはただの表計算ソフトではなく、「自動化されたデータ処理ツール」へと進化します。ぜひこの記事を参考に、あなたの業務にも取り入れてみてください。
Excelをもっと自由に、もっとスマートに使いこなしましょう。

コメント