LEVEL 8 テーブルとデータベース的思考 上級
Lesson 075

INDIRECT関数について②

練習用Excelファイル lesson075-practice.xlsx

練習用ファイルは、パソコンからダウンロードしてください。

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ヶ月分の合計が一気に集まります

12シート分を集計
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つの動的参照関数の使い分けをまとめておきます。

OFFSETINDIRECT
考え方基準セルから 位置をずらす文字列をセル参照 に変換
強い場面自動拡張する範囲、最新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 は「参照先を切り替える」と使い分け
  • どちらも 揮発性関数。乱用せず、要所で

ショートカット

※このレッスンに対応するショートカットはありません。

次のLessonへ Lesson 076 シートのコピーと注意点