エクセル INDIRECT 関数:文字列をセル参照に変換する

はじめに

エクセルの INDIRECT 関数の使い方を紹介します。

INDIRECT 関数は文字列のセル名を実際のセル参照にします。

=INDIRECT("A1") のようにして、文字列の A1をセル「A1」の参照に変換できます。

=INDIRECT(A1) のようにして、セル「A1」に入力されているセル名の参照に変換できます。

名前の定義」で付けた名前をセル参照にできます。これでセルの範囲を動的に切り替えられます。

セルの範囲から指定した行と列の位置にあるセルを取得するには「INDEX 関数」を使用します。
セル参照する方法は「セルの参照の仕方」をご覧ください。
  • 目次
    • INDIRECT 関数の引数
    • 使い方
    • 高度な使い方
    • 解説

INDIRECT 関数の引数

INDIRECT(参照文字列)
A1 形式の参照文字列を実際のセル参照に変換します。

INDIRECT(参照文字列, 参照形式)
参照形式で R1C1 形式で変換するように指定できます。

引数「参照文字列」セル名や定義した名前を文字列で指定します。セル参照も指定できます。
引数「参照形式」省略できます。参照形式を A1 形式にするか R1C1 形式にするか切り替えます。
TRUE または省略:A1 形式で参照します。
FALSE:R1C1 形式で参照します。

使い方

INDIRECT 関数の使い方を紹介します。

結果がセルの範囲のときは複数のセルに表示されます。これはスピルという機能によるものです。詳しくは「スピル、動的配列数式の使い方」をご覧ください。

文字列をセル参照にする

文字列の B2 をセル「B2」の参照にします。

=INDIRECT("B2")
6

セルの値をセル参照にする

セル「B2」に入力された C2 をセル「C2」の参照にします。

=INDIRECT(B2)
7

セルの列と行をセル参照にする

列名 D と行名 2 をセル「D2」の参照にします。

=INDIRECT(B2&C2)
8

セルの値をセルの範囲にする

セル「B2」に入力された C2:E2 をセルの範囲「C2」~「E2」の参照にします。

=INDIRECT(B2)
=SUM(INDIRECT(B2))

結果はセルの範囲なので、2019 以前のバージョンでも「SUM 関数」などに使用できます。

13

別シートを参照する

シート「Sheet2」に参照したいデータがあります。

14

セル「B2」に入力された Sheet2!B2 をシート「Sheet2」のセル「B2」の参照にします。

=INDIRECT(B2)
15

別シートを参照するには シート名!セル名 のように入力します。セル名の前に シート名! を付けると、そのシートのセルを参照できます。

セル参照を入力するのと同じように別シートのセルをクリックして簡単に Sheet2!B2 のように入力できます。

詳しくは「別シートを参照(リンク)する」をご覧ください。

R1C1 形式で参照する

文字列の R2C2 をセル「B2」の参照にします。

=INDIRECT("R2C2",FALSE)
10
R1C1 形式について詳しくは「列を数字または英語で表示する」をご覧ください。

高度な使い方

INDIRECT 関数と他の関数を組み合わせた使い方などを紹介します。

名前の定義を参照する

名前の定義」から見出しの名前でその列の範囲を参照するように名前を定義しています。名前 なら B3:B5 です。

16

セルに入力された定義した名前 名前 をセル「B3:B5」の参照にします。

=INDIRECT(B7)
=INDIRECT(C7)
=INDIRECT(D7)
17

関数の引数のセルの範囲を動的に切り替える

上記の「名前の定義を参照する」方法で、「XLOOKUP 関数」など関数のセルの範囲を動的に切り替えられます。セルの範囲を入力する引数に INDIRECT 関数を入力します。

XLOOKUP 関数」の引数「結果範囲」を INDIRECT 関数で定義した名前の参照から取得します。

=XLOOKUP(B8,$B$3:$B$5,INDIRECT(C8))
18

セルの値をリストから選択できるようにすると簡単に切り替えられます。

19
リストから入力するには「ドロップダウンリストから入力する」をご覧ください。

解説

セルの値がセル参照になるので、数式はそのままでセルの値を変更するだけで、関数の引数に入力するセルの範囲を動的に切り替えられます。

引数「参照文字列」に文字列でセル名を入力すると、そのセル参照になります。=INDIRECT("B2") なら =B2 と同じ結果になります。

引数「参照文字列」がセル参照なら、そのセルに入力されているセル名のセル参照になります。

引数「参照文字列」に「名前の定義」で付けた バージョン を参照するには =INDIRECT("バージョン") を入力します。

引数「参照文字列」がセル参照でない値や存在しない名前のときはエラー #REF! になります。

引数「参照形式」を A1 形式 にするのが一般的です。

セル参照について詳しくは「セルの参照の仕方」をご覧ください。