複数の表を切り替えてデータを参照したい場合や、多くの表のデータを抽出・集約したい場合に便利なのが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関数は、機能はシンプルながらかなり応用の効く関数といえます。使いこなせばエクセル作業の時短にも役立ちます。今回の内容も参考に、ぜひ覚えてみてください。