INDIRECT関数について②
前回は「文字列をセル参照として解釈する」という基本の動きと、別シートを動的に呼び出す方法を学びました。
今回は、INDIRECT が 本当の意味で活きる実用パターン を3つ紹介します。
- ケース①:12シート分の月別合計を、1つの集計表にまとめる
- ケース②:名前の定義と組み合わせて、可読性の高い参照
- ケース③:ドロップダウンを2段階で連動させる(連動リスト)
OFFSET と並んで、INDIRECT は 「Excelの中で動的な仕組みを作る」上級者の常備関数 です。この回で、その威力を体感してください。
ケース①:12シート分を1つの表に集計する
こちらは前のレッスンの再確認と応用です。
「1月」「2月」…「12月」と、月別にシートが分かれた売上ファイル。各シートの B10 に月の合計 が入っているとします。
これを、集計シートに 縦に並べたい。
集計シートをこう作ります。
:::excel
A1=月
B1=売上合計
A2=2026年1月
B2=
A3=2026年2月
B3=
A4=2026年3月
B4=
A5=2026年4月
B5=
:::
B2 セルに、
=INDIRECT("'" & A2 & "'!B10")
下に向かってオートフィルでコピー。
これだけで、
- B2 → 「2026年1月」シートの B10
- B3 → 「2026年2月」シートの B10
- B4 → 「2026年3月」シートの B10
- …
と、12ヶ月分の合計が一気に集まります。

これを INDIRECT を使わずにやろうとすると、
='2026年1月'!B10
='2026年2月'!B10
='2026年3月'!B10
と、12行すべてを手作業で書き換える ことになります。INDIRECT を使えば 数式は1つで、A列を見て自動切り替え。圧倒的に効率的です。
「月別シート → 集計シート」というレイアウトは、企業の経理・予算管理でよく使われる定番パターン。ここで INDIRECT を使えるかどうかで、作業時間が10倍くらい違います。
ケース②:名前の定義と INDIRECT を組み合わせる
レッスン055で「名前の定義」を学びました。範囲に名前を付けて、数式で呼び出せる機能です。
INDIRECT は、名前の定義の文字列版を呼び出す のにも使えます。
たとえば、商品マスタの範囲に「商品マスタ」、顧客マスタに「顧客マスタ」と名前を定義してあるとします。
集計シートの A1 に「商品マスタ」と入力しておいて、
=COUNTA(INDIRECT(A1))
→ 「商品マスタ」という名前の範囲を参照して、行数をカウント。
A1 を「顧客マスタ」に切り替えれば、今度は顧客マスタの行数。参照先を、入力欄1つで切り替えられる わけです。

ダッシュボード作りや、複数マスタを切り替えて閲覧したいような画面で重宝します。
ケース③:ドロップダウンを2段階で連動させる
INDIRECT で 一番有名な使い方 がこれです。
「部署を選ぶと、その部署に属する社員だけが2つ目のリストに出る」── そんな2段階の連動ドロップダウン。アンケートフォームや、見積書、申請書でよく目にします。
準備:マスタを作る
別シート(または別領域)に、こんな表を用意します。
:::excel
A1=営業部
B1=開発部
C1=管理部
A2=山田
B2=田中
C2=高橋
A3=鈴木
B3=佐藤
C3=井上
A4=山本
B4=渡辺
C4=
:::
それぞれの列に、列見出しと同じ名前 を定義します。
- A2:A4 に 「営業部」 という名前
- B2:B4 に 「開発部」 という名前
- C2:C4 に 「管理部」 という名前
名前の定義の方法は、範囲を選択 → 数式バー左の 名前ボックス にそのまま名前を入力 → Enter、が一番速いです。
手順:1段目のドロップダウン
入力シートのセル(例:E2)に、
- データタブ →「データの入力規則」
- 「リスト」 →「元の値」に
営業部,開発部,管理部と入力
これで E2 では「営業部・開発部・管理部」から1つ選べるようになります。
手順:2段目のドロップダウン(連動部分)
E3 セルに、
- データタブ →「データの入力規則」
- 「リスト」 →「元の値」に、
=INDIRECT(E2)
これがミソ。E2 で選ばれた部署名を、INDIRECT が「名前」として解釈し、対応する社員リストを返します。
E2 で「営業部」を選ぶと、E3 では「山田・鈴木・山本」が選択肢に。「開発部」を選ぶと「田中・佐藤・渡辺」に切り替わります。

これは入力フォームの定番中の定番。INDIRECT を覚えると、Excelで作れる仕組みが一気に広がる と言われる、その代表例です。
連動リストの注意点
便利な連動リストですが、いくつか注意点があります。
① 名前のルールを守る
- 名前の 先頭を文字 にする(数字スタート不可)
- 名前に スペース を含めない
- 部署名と「定義した名前」を 完全に一致 させる
部署名が「営業部」なら、名前も必ず「営業部」。半角・全角・スペースの混入で動かなくなります。
② 部署を後から増やしたら、リスト元も更新
1段目のリスト元(営業部,開発部,管理部)は 手入力した固定リスト なので、後から「企画部」を追加するなら、ここも追記しないと選択肢に出ません。
部署が頻繁に増減するなら、ここも OFFSET と組み合わせて動的化 すると更にスマートになります(レッスン073のケース②参照)。
③ 2段目を選んだ後に1段目を変えると、不整合が残る
E2 で「営業部」を選び、E3 で「山田」を選択 → その後 E2 を「開発部」に変更しても、E3 は「山田」のまま残ります。E3 をクリックしないと、不整合に気づきにくい。
実務では、1段目を変更したら 2段目を空にするマクロ を組むこともあります。VBAの世界に踏み込む話なので、ここでは「そういう注意点がある」とだけ覚えておいてください。
INDIRECT の落とし穴をもう一度
レッスン074で触れた INDIRECT の弱点を、改めて整理しておきます。
| 弱点 | 対応 |
|---|---|
| シート名のスペル違いでエラー | 入力規則で選ばせる、定数管理 |
| 閉じた別ブックを参照できない | 集計時はブックを開く運用に |
| シート名・名前の変更に追随しない | 命名規則を固める、後から変更しない |
| 揮発性で重くなる | 動的化が必要な箇所だけに絞る |
特に「シート名や名前を後から変えると、INDIRECT が壊れる」という点は、規模の大きいファイルで地雷になりがちです。
INDIRECT を使うときは、
- マスタとなるシート名・範囲名は、最初に確定する
- 命名規則をシンプルに(「2026年1月」より「2026_01」のほうが扱いやすい)
- 間違って書き換えないように、シート名やセル参照を別表で一元管理する
このあたりを意識すると、長く運用できる仕組みになります。
OFFSET と INDIRECT の使い分け
LEVEL 8 の最後に、2つの動的参照関数の使い分けをまとめておきます。
| OFFSET | INDIRECT | |
|---|---|---|
| 考え方 | 基準セルから 位置をずらす | 文字列をセル参照 に変換 |
| 強い場面 | 自動拡張する範囲、最新N件 | 別シート参照、連動リスト |
| 入力 | 数値で位置・サイズを指定 | 文字列で参照先を指定 |
| シート横断 | 弱い | 強い |
| 動的範囲(合計範囲など) | 強い | 弱い(範囲は別途用意が必要) |
「範囲を作りたい → OFFSET」「参照先を切り替えたい → INDIRECT」── ざっくりこの使い分けで、ほぼ判断できます。
両方とも 揮発性 なので、「ここでしか実現できない箇所」に温存して使う という基本姿勢は、共通して持っていてください。
LEVEL 8 を終えて
LEVEL 8「テーブルとデータベース的思考」は、ここまでで完結です。
振り返ってみると、
- フィルター(067・068)── 行を絞り込む基本
- 並び替え(069)── 表を整える、ただし壊さない注意
- テーブル(070)── 表を「正式なデータの塊」として扱う
- 構造化参照とテーブル解除(071)── テーブル名で呼ぶ世界
- OFFSET(072・073)── 動的な範囲を作る
- INDIRECT(074・075)── 文字列で参照先を切り替える
「Excelの表」を、ただの罫線が引かれたシート ではなく、動的に動く、データベース的な存在 として扱う方法を身につけていただけたはずです。
ここまで来ると、Excel は本当に「プログラミング言語に近い、表計算の世界」に見えてきます。次の LEVEL では、また視点を変えて、作ったファイルを「守る」 お話に進みます。共有・配布の現場で必要な、地味だけど大切なテーマです。お疲れさまでした。
まとめ
- 月別シート集計には
=INDIRECT("'" & A2 & "'!B10")が定番 - 名前の定義 × INDIRECT で参照先を動的に切り替え可能
- 連動ドロップダウンは
=INDIRECT(1段目セル)で実現できる - シート名・名前の 変更に追随しない ので、最初に確定して運用
- OFFSET は「範囲を作る」、INDIRECT は「参照先を切り替える」と使い分け
- どちらも 揮発性関数。乱用せず、要所で
ショートカット
※このレッスンに対応するショートカットはありません。