2018. Dec. 19
たとえば仕事でこんなデータを管理しているとします。「IDが『B001』の商品名をすぐに教えて!」なんて電話対応があった場合……
「VLOOKUP関数でしょ??」と試してみるとエラーに……!?あれ?
VLOOKUP関数は一覧表の左側にIDが記載されていなければ目的のデータを拾うことができません。
終わった……目視か……と思う前に!そんなときはINDEX関数というものを使えば便利ですよ!早速使い方を見ていきましょう!
INDEX関数……あまり聞きなれない関数ですが、どのような時に使うのでしょうか。INDEX関数は、「範囲内の縦が●●、横が◎◎の位置にあるセルの値を調べる」関数です。
書式は =INDEX(範囲,縦位置,横位置)です。
横位置は省略することが可能で、入力しなかった場合1列目を指定したことになります。
範囲が1列の場合には省略しても問題ないのですが、複数列がある場合指定します。たとえば先ほどのこのような表の場合で見てみましょう。
B3からB6の範囲の中から指定したものの商品名「キャンディー」をB9に表示したい!という場合には、B9に「=INDEX(B3:B6,B8)」と入力しましょう。
そしてセルB8に「B001」の位置(3番目なので「3」)を入力します。するとB9に「キャンディー」と表示されます。これがINDEX関数です。
続いて、MATCH関数についても抑えておきましょう。こちらもあまり聞きなれない関数ですね。MATCH関数は、範囲内で指定した値について、範囲内の上から数えた位置でその値を求めます。
書式は =MATCH(検索値,範囲,一致か近似値か)です。
「一致か近似値か」の部分については、
・一致の場合は「0」
・範囲の中の近似値以下で最大値を探す場合には「1」
・範囲の中の近似値以上で最小値を探す場合には「-1」
を使用します。注意点としては、近似値の場合、一覧の範囲を並べ替えておかなければ、正しい値が表示されません。「1」の場合には一覧を昇順で、「-1」の場合には一覧を降順で並べ替えましょう。
先ほどのこのような表の場合では、B9に「=MATCH(B8,D3:D6,0)」と入力すると、D3からD6の範囲の中で、B8に入力した値(B001)が上から何番目にあるのかをB9に表示します。
この場合は「B001」が上から3番目にあるので「3」と表示されていますね。
ここまで見てきた、INDEX関数とMATCH関数を使えば、VLOOKUP関数が使えない場合でも、値の検索表示が可能となります。
たとえばこのように、左端に検索値がない表から特定の値を検索することが可能になります。冒頭のように、「『ID』から商品名を調べたい」場合の手順を見ていきましょう。
B8にIDを入力し、B9に商品名を表示させるために、B9に「=INDEX(B3:B6,MATCH(B8,D3:D6,0))」と入力します。
文章で解説すると「=INDEX(求める値の範囲,MATCH(検索値,検索する値の範囲,0))」となります。すると、B8にID「B001」と入力すると、B9に「キャンディー」と表示されました!
参照時の前提条件や、注意点もあります。
計算式をコピーする場合、コピーする前に求める値の範囲と、検索する値の範囲は【絶対参照】にしておきます。さらに気を付けたいのは、INDEX関数の求めた値を表示する際、空白セルを参照していた際には、空白ではなく、0と判断されてしまいますので注意しましょう。
一見複雑そうに見えますが、覚えてしまえばVLOOKUP関数ではできなかった、検索値が左端ではない場面での検索も可能になります。一度簡単な表などで試してみてくださいね!