INDIRECT関数の使い方|別シートの集計と連動プルダウン
※写真はイメージです
書き方はこれだけ
=INDIRECT("セル番地を表す文字")INDIRECTは、「A1」「4月!B10」のような文字を、本物のセルの場所として読んで、その中身を返す関数です。シート名やセル番地を別のセルに書いておいて、&でつないで参照先を切り替えるときに使います。正直、単体ではあまり出番がなくて、使うのはほぼ「月ごとのシートの合計を1枚に集める」と「連動するプルダウン」の2つです。
この図の表をExcelファイルでダウンロード(問題と答えのシートつき)
基本の動き
| 式 | 意味 | 結果 |
|---|---|---|
=INDIRECT("B3") | B3の中身 | B3に入っている値 |
=INDIRECT("B"&D1) | D1に5と入っていれば B5 の中身 | D1を変えると参照する行が変わる |
=INDIRECT(A2&"!B10") | A2に書いたシート名の B10 | シートをまたいで集計 |
=SUM(INDIRECT(A2&"!B2:B9")) | そのシートの B2:B9 の合計 | 範囲も指定できる |
シートをまたいで集める
シート名に空白や記号(「4月 実績」など)が入っているときは、シート名を '(シングルクォーテーション)で囲む必要があります。
=INDIRECT("'"&A2&"'!B10")
A列に書くシート名は、シートの見出しと一字一句同じにしてください(全角・半角、空白も)。ここが1文字でも違うと #REF! になるので、つまずくのはだいたいここです。
連動するプルダウン(分類を選ぶと商品の候補が変わる)
- D2:D4 を選んで、左上の名前ボックスに「くだもの」と入れて EnterE2:E4 には「やさい」。見出しのD1・E1と同じ名前にします。
- A2 に分類のプルダウンを作る(データの入力規則 →「リスト」→ 元の値
くだもの,やさい) - B2 を選んで「データ」→「データの入力規則」→「リスト」→ 元の値に
=INDIRECT(A2)A2で選んだ分類と同じ名前の範囲が、B2の候補になります。
うまくいかないとき
1#REF! になる
4月 4月書いたシート名やセル番地が、実在する名前と一致していません(後ろの空白など)。
直し方シート名をコピーして貼り付けるか、TRIMで空白を消します。空白や記号を含むシート名は ' で囲みます。
2別のブックを参照すると #REF!
INDIRECTは、閉じているブックの中は参照できません。
直し方参照先のブックも開いておくか、1つのブックにまとめます。
3ファイルが重くなった
INDIRECTはどこかが変わるたびに計算し直す関数で、たくさん使うと遅くなります。
直し方必要なところだけに使い、月ごとの集計ならピボットテーブルやシートの統合も考えます。
サンプルファイルで試す
黄色のセルにINDIRECTの式を入れて、「答え」のシートと比べてください。
indirect.xlsx をダウンロード(無料・登録なし)
よくある質問
INDIRECT関数とは?
「A1」「4月!B10」のような文字を、セルの場所として読んで中身を返す関数です。参照先を別のセルの文字で切り替えられます。
別シートを参照するには?
=INDIRECT(A2&"!B10") のように、シート名と「!」とセル番地をつなぎます。シート名に空白があるときは ' で囲みます。
連動するプルダウンの作り方は?
候補の範囲に分類と同じ名前を付け、2つ目のプルダウンの元の値に =INDIRECT(1つ目のセル) を入れます。
#REF!になります
シート名やセル番地の文字が実際の名前と一致していないか、参照先のブックが閉じています。
一緒に覚えたい関数・操作
このページについて
操作の説明は Microsoft 365 の日本語版Excel(Windows)に合わせています。図はこのサイトで作ったもので、表の会社名・商品名・人名は架空です。運営者情報