PR

INDIRECT:インダイレクト【文字を「参照先」に変換する】

=INDIRECT(参照文字列)
■文字列として入力したセル番地や範囲名を、計算式で参照できる形に変換する。参照先を文字列で間接的に指定し、切り替え可能にする

 図1の上にあるような、「4月」「5月」「6月」といった名前の別シートにある合計の値(B5セル)を、「集計用」のシートにまとめて表示したい――。

図1 他のシートのセルを参照する場合は「シート名!セル番地」のように指定する。そこで、「月名」が入力されているセルを使って、参照用の文字を作成してみた(左下)。しかし、文字を結合しても、ただの文字列としかみなされず、他のシートの値を表示できない。こんなときは、引数で指定した文字を“セル参照”扱いにするINDIRECT関数を利用する。すると、結合した文字がセル参照とみなされ、参照先の値を表示できるようになる(右下)
図1 他のシートのセルを参照する場合は「シート名!セル番地」のように指定する。そこで、「月名」が入力されているセルを使って、参照用の文字を作成してみた(左下)。しかし、文字を結合しても、ただの文字列としかみなされず、他のシートの値を表示できない。こんなときは、引数で指定した文字を“セル参照”扱いにするINDIRECT関数を利用する。すると、結合した文字がセル参照とみなされ、参照先の値を表示できるようになる(右下)
[画像のクリックで拡大表示]

 エクセルでは、別シートの参照もできる。「4月」という名前のシートの「B5」セルの値を表示したいときは、「=4月!B5」のように、「シート名」に続けて「!」(半角のエクスクラメーションマーク)、セル番地と並べて書けばよい[注1]。

 ただし、他のシートを参照した式をコピーしても、シート名の部分は変わらない。このため、シートごとに参照式を入力する必要がある。参照するシートが多いと、非常に面倒だ。

 そこで、「集計用」シートにある「4月」「5月」…という項目名を利用して、文字の結合で参照式を作成してみた。例えば「4月」シートのB5セルを参照するには、A2セルに「4月」と入力されているので、「=A2&"!B5"」のように「!B5」という文字を&で結合すれば、「4月!B5」となる。あとはこれを下にコピーすれば、「5月!B5」「6月!B5」という文字が自動でできるので、いちいち入力しなくて済むというわけだ。

 しかし、これだけでは単に文字がそのまま表示されるだけで、参照先の値が表示されない(図1左下)。式の中に「4月!B5」「A1:B5」のような文字を入力すると、エクセルはこれらを“セル参照”と自動的に判断してくれるのだが、文字を結合した結果については自動でセル参照とはみなしてくれない。これがセル参照であると、自分で指定する必要があるのだ。

 これに使うのが、引数「参照文字列」に指定した文字をセル参照とみなすINDIRECT(インダイレクト)関数だ。「=INDIRECT(A2&"!B5")」のように、結合した文字を引数に指定すれば、セル参照とみなされ、参照先の値が表示されるようになる(図1右下)。