Excelを使っていると、「隣のシートのデータを自動で持ってきたい」「セルの値によって参照先を切り替えたい」と思うことはありませんか?
そんな時に便利な関数がINDIRECT(インダイレクト)関数です。
【5分で理解】INDIRECT関数の要点まとめ
忙しい方のために、この記事の大事なポイントを先にまとめました。
- 役割:
セルに入力された「文字」を、Excelが認識できる「セルの住所(参照)」に変換します。 - 最大のメリット:
数式を書き換えずに、セルの値を変えるだけで参照先を自由自在に操作できます。 - 主な活用法:
シート名を参照して複数シートを集計したり、2段構えのプルダウン(ドロップダウンリスト)を作成したりするのに最適です。 - 注意点:
多用しすぎると動作が少し重くなる「揮発性関数」という性質を持っています。
まずはこの全体像をイメージしながら、詳細を見ていきましょう。
INDIRECT関数とは?仕組みと基本ルール
INDIRECT関数の役割:文字列を「参照」に変える魔法
通常、Excelで他のセルを参照するときは「=C1」のように入力しますよね。これは「A1という場所にあるデータを見てね」という命令です。
INDIRECT関数は、この「C1」という住所自体を、別のセルに書いてある「文字」から作り出すことができます。
例えば、C1セルに「B1」という文字が入っていたら、「=INDIRECT(C1)」と書くだけで、実質的にB1セルの値を表示してくれるのです。

「直接書けばいいじゃない」と思うかもしれませんが、この「ワンクッション置く」ことが、自動化において非常に重要な役割を果たします。
基本の構文と引数(参照文字列・参照形式)の解説
使い方はとてもシンプルです。
=INDIRECT(参照文字列, [参照形式])
- 参照文字列:参照したいセル番地や名前を「文字」として指定します。
- 参照形式(省略可):真(TRUE)なら「A1形式」、偽(FALSE)なら「R1C1形式」になります。基本的には省略してOK(A1形式)です。
なぜ「直接入力」ではなく「INDIRECT」を使うのか?
普通の参照(=A1)だと、参照先のセルを削除したり移動したりすると、数式がエラーになったり勝手に書き換わったりしてしまいます。
しかし、INDIRECT関数は「文字」として場所を指定しているため、レイアウトが多少変わっても「この名前の場所を見る」というルールが崩れにくいという強みがあります。また、計算式の中で「シート名」を動的に切り替えられるのは、この関数ならではの特権です。
実務で役立つ!INDIRECT関数の基本活用シーン
別セルの値を参照先として指定する方法
例えば、A1セルに「100」が入っていて、B1セルに「A1」という文字が入っているとします。

このとき、別のセルで「=INDIRECT(B1)」と入力すると、結果は「100」になります。
「B1に書いてある『A1』という場所を見に行ってね」という指示が通ったことになります。
文字列を結合して動的なセル番地を作るテクニック
文字を繋げる「&(アンパサンド)」と組み合わせると、さらに便利になります。
例えば、「=INDIRECT(“A” & C1)」という数式を作ります。
C1セルに「5」と入れれば「A5」を参照し、「10」と入れれば「A10」を参照してくれます。行番号だけを別のセルでコントロールできるようになるのです。


C1セルに”10″が入っている場合
【応用編1】複数シートのデータを1箇所に集約する
実務で一番「やっててよかった!」と思えるのが、このシート参照の自動化です。
シート名をセルから参照して切り替える方法
「4月」「5月」「6月」と分かれたシートがあり、それぞれのB5セルにある売上合計を1つのまとめシートに集約したい場合、通常は1つずつ数式を打つ必要があります。
しかし、INDIRECT関数を使えば、セルに書いた「4月」という文字をそのままシート名として使えます。
=INDIRECT(A2 & “!B5”)
(※A2セルに「4月」と入力されている場合)


このように、左側のセルにシート名を並べておくだけで、数式をコピーするだけで全シートの集計が完了します。
シート名にスペースや記号が含まれる場合の注意点
「2026年 4月」のように、シート名にスペースや数字が含まれる場合、Excelのルールでシングルクォーテーション(’)で囲む必要があります。これを数式に組み込むと少し複雑に見えますが、以下の形が「お作法」です。
=INDIRECT(“‘” & A2 & “‘!B5”)
最初は難しく感じるかもしれませんが、「おまじない」だと思ってテンプレート化しておくと安心です。
【応用編2】連動するドロップダウンリスト(プルダウン)の作成
「部署を選ぶと、その部署に所属するメンバーだけが次のリストに出てくる」という仕組み、憧れますよね。これもINDIRECT関数の得意分野です。
名前の定義とINDIRECT関数を組み合わせる手順
- まず、メンバーのリストに「営業部」「総務部」といった名前を定義します(範囲を選択して、名前ボックスに入力)。
- 1つ目のプルダウンで「部署名」を選べるようにします。
- 2つ目のプルダウンの「入力規則」の設定で、元の値に「=INDIRECT(1つ目のセルの場所)」と入力します。
これだけで、1つ目で選んだ文字(部署名)が、そのまま「定義した範囲の名前」として認識され、リストが動的に切り替わります。
Excelで2段階プルダウンを連動させる方法|INDIRECT関数でミスをゼロにする究極ガイド
3段階以上の多階層プルダウンへの拡張方法
この仕組みを応用すれば、都道府県→市区町村→町名、といった3段階以上の連動も可能です。設定は少し手間がかかりますが、入力ミスを防ぐ効果は絶大です。
「実際に導入したら、現場の入力ミスが50%減った」という声も多く聞かれる、非常に満足度の高いテクニックです。
知らないと危険!INDIRECT関数の注意点とデメリット
とても便利なINDIRECT関数ですが、実は「使いすぎ注意」な側面もあります。
揮発性関数(Volatile Function)による動作遅延のリスク
INDIRECT関数は「揮発性関数」と呼ばれます。これは、Excel内のどこか1箇所でもセルが更新されるたびに、この関数も再計算されるという性質です。
データ量が多いブックで何千個もこの関数を使うと、動作が非常に重くなることがあります。「実際に、数万行のデータで使ったらファイルを開くのに30秒以上かかるようになった」という事例もあります。
デメリットを補うための具体的な数字と対策
以下の表に、INDIRECT関数を使う際のリスクと対策をまとめました。
| 項目 | 影響と詳細 | 対策・代替案 |
|---|---|---|
| 再計算の頻度 | セルを1つ打つたびに計算が走る | 必要な箇所に絞って使用する |
| ファイルサイズ | 数式自体は短いが、メモリを消費しやすい | 計算結果を「値貼り付け」で固定する |
| 外部参照 | 参照先のファイルが閉じているとエラーになる | 参照先ファイルも同時に開いておく |
| 代替関数の検討 | INDEX関数などの方が動作は軽い | 構造的に可能ならINDEX/OFFSETを検討 |
「〜という声が多い」と言われる通り、特に大規模なプロジェクト管理表などでは、後半になるにつれて動作の重さが課題になりがちです。ここぞという場面でスマートに使うのがプロの技ですね。
よくあるエラーと解決策(トラブルシューティング)
#REF!エラーが出る4つの主な原因
INDIRECT関数で最も遭遇するのが「#REF!(参照不可)」エラーです。
期待通りの数値が返ってこない時のデバッグ手法
もしエラーが出たら、数式の中の「“文字” & A1」などの部分だけを一度外に取り出して、どんな「文字列」ができあがっているか確認してみてください。それが正しいセル住所になっていなければ、そこを修正するだけで解決します。
まとめ
INDIRECT関数は、一見すると「文字をいじるだけの地味な関数」に見えるかもしれません。しかし、その実体はExcelの動的な操作を支える強力なエンジンです。
これらを実現することで、あなたの業務効率は飛躍的に高まります。最初は「”」や「&」の使い方に戸惑うかもしれませんが、一度テンプレートを作ってしまえば一生モノのスキルになります。
まずは、小さな集計表のシート参照から始めてみませんか?あなたのExcelライフが、もっと楽しく、もっと自由になることを応援しています!
コメント