INDIRECT関数は指定した文字列への参照を返す関数だ。INDIRECT関数の引数にセル番号を文字列として指定することで、セルに入力された文字列や数値が出力される。今回は基本的な使い方を解説していく。
目次
INDIRECT(インダイレクト)関数の使い方がよくわからないという方もいるのではないだろうか。INDIRECT関数は指定したセル番号に入力された値を取得できる関数だ。
本記事ではINDIRECT関数の使い方について解説する。
INDIRECT関数とは?
INDIRECT関数とは、指定した文字列への参照を返す関数である。
■INDIRECT関数の構文
構文は以下のとおり。コピーし、参照文字列と参照形式を書き換えるだけで使用できる。
=INDIRECT(参照文字列, 参照形式)
・参照文字列とは?
参照文字列には、INDIRECT関数によって参照したいセル番号を入力する。こちらの引数は必ず指定しないといけない。
たとえば、A2に入力されている値を参照したい場合は「=INDIRECT(“A2”)」とする。セル番号には必ず「””」を付ける必要がある。「=INDIRECT(A2)」だとエラーが出てしまう。
また、他のブックを参照することも可能である。その場合ブックを開いておく必要がある。


・参照形式とは?
セルの指定をR1C1形式(R=row/行、C=セルの指定をR1C1形式(セルではなく、R=row/行、C=column/列に対して番号で指定すること)を採用する場合、参照形式が必要となる。参照形式にFALSEを指定した場合、R1C1スタイルでのセル番号指定とみなして、参照文字列を返す。
ただし、基本的にはA1形式(セルを「A列の1行目」と指定していくこと)を使うので、この引数は指定することのほうが少ない。基本的には省略して問題ない。

基本構文がわかってところで、次の項目からは具体的にINDIRECT関数がどんな場面で活用できるのか、解説していく。
INDIRECT関数とMATCH関数を組み合わせる方法
INDIRECT関数は単体だとあまり使われることはなく、他の関数と組み合わせて使われる場合が多い。ここではINDIRECT関数とMATCH関数を組み合わせる方法を紹介しよう。
■MATCH関数とは?
MATCH関数と組み合わせることで、表内の任意のデータを簡単に取得できる。
=MATCH(検査値,検査範囲,[照合の種類])
INDIRECT関数とMATCH関数を組み合わせる方法について、次の2つの手順で解説する。
- MATCH関数で検索値の場所を返す
- INDIRECT関数で検索値と同じ行のデータを返す
■1.MATCH関数で検索値の場所を返す
MATCH関数は指定した値が、指定した範囲の何番目になるかを返す関数である。
以下では、
=MATCH("田中",A2:A10,0)
としている。MATCH関数によって、「田中」がA2〜A10の範囲で何番目にあるか出力しようとしている。

実行すると「4」と表示された。田中は4番目にあるので、正しく処理していると分かる。

■2.INDIRECT関数で検索値と同じ行のデータを返す
MATCH関数で「田中」が4番目になることが出力できたら、その情報を利用してINDIRECT関数を使って、「田中の点数は何点か」を表示してみよう。
以下では、
=INDIRECT("B"&MATCH("田中",A2:A10,0)+1)
と指定している。MATCH関数の結果は、「4」であり、そこに1がプラスされるから「5」になる。
つまり、「=INDIRECT(“B5”)」ということになる。INDIRECTとMATCH関数によって、検索値(田中)と同じ行のデータを返すことができている。

実行すると「92」と表示され、B5の値が取得できていることが分かる。

INDIRECT関数とVLOOKUP関数を組み合わせる方法
INDIRECT関数は単独で使用しても有用ではなく、VLOOKUP関数と組み合わせることで便利になる。
■VLOOKUP関数とは?
Excelで膨大なデータから特定の条件(商品名や氏名など)を縦方向に検索し、関連する情報を自動的に取得する関数だ。
=VLOOKUP(検索値,範囲,列番号,[検索方法])
■INDIRECT関数とVLOOKUP関数を組み合わせた使い方
これをINDIRECT関数と組み合わせることで、以下のように「田中」「佐藤」「鈴木」と複数のシートを作成した時、セルに入力されたシート名に合わせて参照先を自動で切り替えることが可能になる。具体的には下記の通りだ。
B2セルに、「田中」シートに記載してある商品Aの売り上げを参照したい場合、VLOOKUP関数とINDIRECT関数を組み合わせてこのような関数になる。

=VLOOKUP(B$1,INDIRECT("'"&$A2&"'!$A:$D"),2,FALSE)
これはつまり、【シート「サマリ」のA2セルに書かれた文字列「田中」と一致するシートの中で、A列がセルB1に書かれた文字列「商品A」と一致するセルの、A列から数えて2番目と完全一致する値を参照する】という意味だ。
通常、それぞれのシート名を指定したい場合手打ちしていく必要があるが、INDIRECT関数を使えば、B2セルだけに入力したのち、フィルハンドルを下へドラッグしてコピーしていくだけで、自動で参照先のシートが切り替わっていく。
まとめ
本記事ではINDIRECT関数について解説した。最後に、INDIRECT関数の書式についておさらいしよう。
- 参照文字列
- 意味:参照したいセル番号
- 例:=INDIRECT(”A1”)
- 参照形式
- 意味:FALSEを指定した場合、R1C1スタイルでのセル番号指定となる
- 例:TRUE or FALSE
INDIRECT関数にセル番号を指定すれば、そのセルの値を取得できる。
構成/編集部







DIME MAGAZINE












