【Excel】INDIRECT関数 – セルの文字列を使ってシートを参照する

Excel 基本動作

今回は、INDIRECT関数を紹介します。この関数は、セルの文字列を参照することで、別のシートを参照するときに大変便利な関数です。複数シートの情報を1シートにまとめるような業務で大活躍します。

スポンサーリンク

INDIRECT関数が活躍するシーン

INDIRECT関数が活躍するのは、以下のようなバナナ・イチゴ・チョコレートの販売実績を集計するようなケースを想定してください。

こういったシートが、販売エリアの東京・大阪・愛知・神奈川・福岡の5シート存在するとして、それを“集計”シートで纏めます。集計シートは以下のようになっており、ほかのシートを参照したいです。

VLOOKUP関数を使うとどうなるか

例えば”東京”のシートからバナナの売価を引用したいとき、おそらく真っ先に思い浮かぶのは以下のようにVLOOLUP関数を使う方法です。以下のような式を投入することで、東京のバナナの売価である”100″を引用することができます。

  • =VLOOKUP(集計!$B3,東京!$B$3:$F$6,2,0)

VLOOKUP関数については過去に紹介していますので、ご存じない方はご参照ください。

さて、東京のシートだけだったらこの方法で問題ありませんが、今回の例はシートが5枚あります。大阪・名古屋・神奈川・福岡のシートに対するVLOOKUP関数を投入しなおす必要があります

5シートならまだ良いですが、実務ではもっと多くのシートを扱うこともあり、毎回VLOOKUP関数を投入しなおすのは非常に骨が折れます

そこで使えるのが、次に紹介するINDIRECT関数です。

スポンサーリンク

INDIRECT関数を組み合わせて効率化

INDIRCET関数とは

INDIRECT関数は、指定された文字列への参照を返す関数です。使い方は以下の通りです。

  •  =INDIRECT関数(参照文字列,参照形式(省略可))

参照形式については興味がない人が多いと思うので、省略を前提にしてしまって、参照文字列のみを考えてみます。例えば上の集計表で、以下のようにINDIRECT(“B3”)と投入します。そうすると、“B3″という文字列を参照先と認識し、B3セルにある”バナナ”を引用してくることができます。

便利な使い方

しかし、これだけだと何に使えるのか全く分かりませんね。INDIRECT関数で最も効果が大きいのが、他のシートをシート名を使って参照するケースです。例えば今回でいえば、”東京”という名前のシートを参照したい。そんな時は、以下のようにできます。

  •  =VLOOKUP(集計!B3,INDIRECT(C2&”!$B$3:$F$6″),2,0)

ポイントは、INDIRECT(C2&”!$B$3:$F$6″)の部分です。C2には”東京”という、参照したいシートと同じ文字列が存在します。これと、”B3:F6″という参照先の参照したい範囲をくっつけます。こうすることで、INDIRECT関数の結果が、“東京!$B$3:$F$6“となります。INDIRECTを使わずにVLOOKUP関数を使った最初の式と、結果的に同じになるということですね。

  • =VLOOKUP(集計!B3,東京!$B$3:$F$6,2,0)

INDIRECT関数が便利なのは、この数式を横にコピーしていけば、”C2″という参照先が自動的にD2=>E2=>F2=>G2と移動するので、VLOOKUP関数の参照位置を調整する必要がなくなることです。具体的には、以下のような式とします。

  • =VLOOKUP(集計!$B3,INDIRECT(C2&”!$B$3:$F$6″),2,0)

“バナナ”とあるB3セルを複合参照し、あとはオートフィル機能を使うことで、以下のように各エリアのシートのデータを引用することができました。(E3セルがエラーになっているのは、私がシート名を”愛知”にしたのに、集計表で”名古屋”としてしまったからです。わかりやすい間違いなのでそのままにしています。)

複合参照については次回の記事で紹介します。

オートフィルについては過去に書いていますのでご参照ください。

コメント

タイトルとURLをコピーしました