HOME > エクセル関数 > INDIRECT関数

INDIRECT関数の利用

 INDIRECT関数は、指定された文字列への参照を返します。

 参照文字列で指定されるセル参照を返しますが、セル参照はすぐに計算され、結果としてセルの内容が表示されます。

 INDIRECT 関数を使うと、数式自体を変更しないで、数式内で使用しているセル参照を変更することができます。

書式
=INDIRECT(参照文字列,参照形式)

INDIRECT関数

 セルB8には=INDIRECT(A8)と入力されており、セルA8にはB2と入力されています。よってセルB2を参照するので「女」が返されています。

 セルB9には=INDIRECT(”A9”)と入力されており、文字列で指定されています。文字列で指定しているので参照先のB2をそのまま返しています。

INDIRECT関数の使用例1

 INDIRECT関数はそれだけで考えるとあまり使い道が思いつきませんが、他の関数や機能と組み合わせて使うととても便利のいい関数になります。

 下の図はVLOOKUP関数にネストして使用しています。これは現在ある複数の表からデータを反映させるのに便利です。

 まずは既存の表を名前で定義します。下図の場合は「本体」でセルB2:C6、「周辺機器」でE2:F6を範囲指定します。準備はコレだけです。

 下図B9に区分を入力し、B10に製品を入力しましょう。すると値段が自動で反映されます。セルB11に入力された関数の中にあるINDIRECT関数によってセルB9が参照され、参照された本体が名前で定義されているのでVLOOKUP関数の範囲がB2:C6になっています。

 よって製品「デスクトップBタイプ」の値段が無事反映されているのです。

INDIRECT関数の利用

INDIRECT関数の使用例2

 INDIRECT関数と入力規則、VLOOKUP関数、名前の定義を組み合わせた技を紹介します。

 新しく表を作成するとき、もしくは大幅に現在の表を修正しなければならないときに試してください。まず、表を一つにまとめます。「INDIRECT関数の使用例1」の二つの表は一つにまとめることが出来ます。新たに区分の項目を作成すればよいのです。同様にして、店舗による分類も列を増やせば対応できます。

 データを扱うときは基本的に一つにまとめましょう。次に項目ごとに名前を定義します。今回は表の右側に「区分」「本体」「周辺機器」の3つの名前を定義しました。

INDIRECT関数の活用

 表と名前の定義の準備が出来れば今度はデータの入力規則の設定です。まず、セルB12にはデータの入力規則で、リストを選択し、「=区分」を入力します。これでセルB12ドロップダウンリストで本体と周辺機器の二つしか入力できません。

INDIRECT関数の応用

 つぎにセルB13に「=INDIRECT($B$12)」を入力します。するとB13のリストはセルB12に選択された区分のリストが反映されます。

データの入力規則

・区分に周辺機器が選択された場合

名前の定義

・区分に本体が選択された場合

名前の定義の応用

 最後にセルB14に「=VLOOKUP(B13,B1:C9,2,FALSE)」と入力すれば完成です。

 INDIRECT関数、VLOOKUP関数、名前の定義、データの入力規則の4種類を活用することにより上記のような表が作成できます。

 ボクが作成するリストはほとんどこの形式でしょうか、データの入力規則と名前の定義を利用し、あらかじめ入力データをリスト化することがポイントになります。例のように製品数や区分が少なければ問題ないですが、一般的に考えても区分は数種類〜数十種類、製品名に関しては数百〜数千のレベルになってくるでしょう。

 到底製品名をきちっと入力することは難しく、なかなかデータを得ることが出来ません。このように名前の定義を利用することにより、製品名を入力せずに、選択することが出来るようになります。また、区分を利用すること(INDIRECT関数の活用)により全部で数百〜数千ある製品名をいくつかのグループに分けることができ、リストからの選択も容易になります。

VLOOKUP関数、HLOOKUP関数  エクセル職人  ASC関数、JIS関数、TRIM関数、UPPER関数、LOWER関数、PROPER関数

▲TOPへ移動