【Excel】表を切り替えて参照するにはINDIRECT関数が便利!

「複数の表からデータを集めたい」こんなときに便利なエクセル関数が「INDIRECT」です。INDIRECTとはどのような関数なのか、基本の使い方と応用例を交えて紹介します。

複数の表を切り替えてデータを参照したい場合や、多くの表のデータを抽出・集約したい場合に便利なのがINDIRECT関数です。使いこなすことができれば、エクセル関数でできることが大きく増えますので、この機会にぜひ覚えてみてください。

INDIRECTはセル番地を文字列で指定できる

INDIRECTは、簡単にいうと、セル番地(セルの位置)を文字列で指定し、そのセル番地の内容を返す関数です。以下のように記述します。

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

参照文字列には、”A1”など、セル番地を文字列で指定します。参照形式は「TRUE(空欄)」また「FALSE」で指定しますが、通常TRUEまたは省略でOKです。基本的には「=INDIRECT(参照文字列)」と覚えておいて差し支えないでしょう。

※エクセルVBAなどで利用されるR1C1形式ならFALSEを指定しますが、通常あまり使用しません。

以下の画像を見てください。

上記の例で、INDIRECT(D2)と記述すると、D2に書かれている文字列「B2」を指定することとなります。この関数を実行した結果、以下のとおりセル番地B2の値が表示されます。

この場合、セルB2の値を参照するだけなら「=B2」と記述するだけで事足りるため、単体で見ると何の役に立つのか分からないですよね。では、INDIRECT関数の利用にどのようなメリットがあるのか考えてみましょう。

INDIRECTの強みは指定のセル番地を「生成できる」こと

INDIRECT関数の強みは、文字列でセル番地を指定できることです。文字と文字をつなげてセル番地を生成したり、関数と組み合わせて参照先を切り替えることができます。

具体例を二つ紹介しましょう。

ケース① 異なるシートのデータを一つに集約した例

異なるシートの値をピックアップし、一つのシートにまとめる場合、INDIRECT関数が役に立ちます。例を見てみましょう。

このエクセルブックには「揚げ物」「寿司」「デザート」という、商品別売上個数のシートと、合計売上数を集約するための「集計」シートがあります。
今回は「集計」シートに、INDIRECT関数を使って各シートの合計売上数を表示させます。

別シートのデータを参照する場合、通常は「=シート名!セル番地」で事足ります。しかし、この方法は、ひとつひとつの数式にシート名を書き込まなければならず、大量のデータを扱う場合には向きません。それでは、INDIRECTを使ってみましょう。

ここでは、以下の売上数のセルに、別シートの売上個数を表示させます。このとき、かならずシート名と同じ品名を記入したセルを用意しておいてください。

INDIRECT関数の指定は、以下のようになります。

=INDIRECT(シート名と同じ品名セルの番地&”!参照先シートのセル番地”)

実際に指定したところがこちらです。


揚げ物シートには、以下のようにデータが入っています。

この関数を実行すると、以下の結果となります。


あとは、寿司とデザートにも関数をコピーすれば、全く同じ処理が可能です。なお、この方法を使う場合は、各シートの表の形式を揃えるようにしてください。データの数が異なる場合などは、他の関数と組み合わせることでデータの抽出が可能です。

ケース② 複数の範囲からデータを検索した例

次に、複数の表がある場合に、データを検索して表示する方法を考えてみましょう。

今回、シートは以下のようになっています。

ここでは、VLOOKUPを使用して検索を行い、検索範囲をINDIRECTで指定することで、範囲を切り替えられるようにします。VLOOKUP関数の記述は以下のとおりです。

=VLOOKUP(検索値, 範囲, 列番号, 検索の型)

「検索の型」には、TRUE(または1、省略)かFALSE(または0)が入ります。TRUEの場合は近似一致(データが見つからない場合最も近い値を取得)、FALSEは完全一致で検索を行います。今回のように、内容の一致する場合のみ処理を行うときは、FALSEまたは0を指定します。

まず、売上個数を記載してある各表を、品名で指定できるよう名前をつけます。表を選択し、画面左上の欄に、表上に記載の商品カテゴリと同一の名前をつけてください。

全ての表に名前をつけたら、売上個数の表に関数を記述していきます。今回は、以下のように指定を行います。

=VLOOKUP(”売上個数”,INDIRECT(品名が記載されているセル番地),2,FALSE)

実行すると、以下のようになります。

この方法を使うと、毎回表の名付けをすることで、ほぼ自動でデータを集計することができます。手動で行う場合と比べ、大幅に手間の削減が可能です。

時短に効果抜群!INDIRECTを使いこなそう

INDIRECT関数は、機能はシンプルながらかなり応用の効く関数といえます。使いこなせばエクセル作業の時短にも役立ちます。今回の内容も参考に、ぜひ覚えてみてください。

あなたにオススメ

いちはら

今日の晩御飯から不動産・転職までこなすマルチジャンルライター。Twitterでも活動中。Twitter:@IchiharaMakiwo