はじめに
Excel で月次シートをまとめたり、セル参照を動的に切り替えたりしたいと感じたことはありませんか?
そんなときに役立つのが INDIRECT(インダイレクト)関数 です。
この記事では、INDIRECT 関数の基本から実務で使える具体例、注意点までをわかりやすく解説します。
前回の記事でもINDIRECT関数の基本について説明しておりますのでそちらもよければどうぞ。
▶ INDIRECT関数の使い方。
下記でも一応載せております。
INDIRECT 関数とは?
ポイント:文字列で指定したセル番地や範囲名を “本物のセル参照” に変換する関数
例)セル A1 に B2
と入力されているとき、
=INDIRECT(A1)
と入力すると B2 セル を参照します。
つまりB2セルに 1月 と入力されていた場合、関数を入れたセル(A2)には
1月と表示がされるわけです。
基本構文
=INDIRECT(参照文字列, [A1参照形式])
引数 | 説明 |
---|---|
参照文字列 | 参照したいセル番地、シート名+セル番地、名前付き範囲などを文字列で指定 |
A1参照形式 | 省略 → TRUE(A1 形式)、FALSE → R1C1 形式/ほとんどのケースで省略可 |
基本例で動きを確認しよう
- セル参照の切り替え
A1 にC5
と入力 →=INDIRECT(A1)
で C5 を参照(今回はA3に関数入れております。) - 行・列を動的に連結
=INDIRECT("C" & ROW())
で “現在の行 × C 列” を取得
※上記の関数によりB2にはC列の同じ行の値をかえすことになるので
B2はC2と同じ、200が表示されるようになります。
A3にある=INDIRECT(A1)
は、C5のセルを参照しているので500とかえされていますね。
実務で使える 3 つの活用パターン
1. 月別シートの同一セルを切り替え参照
- A1 にシート名(例:
1月
)を入力 - 集計シート(sheet1)の B2 に以下の数式を入力:
=INDIRECT("'" & A1 & "'!B2")
ポイント:シート名に日本語やスペースがある場合は
'
で挟む。
1.シート名をA1セルへ
2.1月のシートB2へsheet1に表示させたい文字を入力
↓ ↓ ↓
2. 名前付き範囲を動的に切り替え
- 範囲 A2:A10 に名前
売上_1月
を付与 - A1 に
売上_1月
と入力し、集計セルに以下の関数を入力
名前の管理についてはこちらで軽くご確認ください。
=SUM(INDIRECT(A1))
A1 を書き換えるだけで参照範囲が変わり、月別集計が一瞬!
A2~A10に金額を入力すると、名前の範囲を参照して合計数値をだしてくれるようになります。
INDIRECT 関数の注意点
落とし穴 | 詳細 |
計算が重くなる | 参照が動的 → 再計算が多いとブック全体が重くなる場合あり |
シート名誤記でエラー | 参照先シートが存在しないと #REF! になる |
構造化テーブル非対応 | Table1[列名] 形式の参照では使えない |
大規模ブックでは INDIRECT の乱用を避け、必要最小限のセルに絞ることが大事です。
応用アイデア
- 月別売上シートを 1 枚にまとめる 月次集計テンプレート
- ドロップダウン(データ検証)との組み合わせで作る 連動リスト
- シフト表の担当者列を切り替えて 担当別作業リスト を自動表示
- 複数ファイルをリンクした 年次マスターブック(INDIRECT × 外部参照)
まとめ
- INDIRECT(“A1”) → A1 セルを参照
'
&&
でシート名+セル番地を動的に組み立てる- 名前付き範囲とも相性抜群で、集計や自動化に活躍
- 重くなる・エラーになりやすい点に注意し、使い所を見極める
コメント