みなさん、こんにちは!以前VLOOKUP関数について簡単に使い方を紹介しましたが、VLOOKUP関数だと左側の列を取得することはできません。そこで、今回はINDEX関数・MATCH関数を用いて、VLOOKUP関数のように検索し左側の列を取得する方法を紹介します。悩んでいる方はぜひご覧ください!
VLOOKUP関数(MOSエキスパートレベル頻出・実務でもよく使う関数)目次
1.そもそもINDEX関数・MATCH関数とは?
①INDEX関数
=INDEX(配列,行番号,列番号)
INDEX関数とは、配列指定した範囲内で指定した行と列の値を表示させることができる関数です。例えば、INDEX関数を使用して、A2:D6セルの範囲でC3セル(A2セルから数えて、上から2番目・左から3列目)の値を表示させる場合には、
=INDEX(A2:D6,2,3)
と入力します。
②MATCH関数
=MATCH(検査値,検査範囲,照合の種類)
MATCH関数とは、指定した範囲内で検索した値が何番目にあるかを表示させる関数です。例えば、
=MATCH(B8,D2:D6,0)
と入力したら、B2セルの値がD2:D6セルの中で上から何番目にあるかを表示します。
2.構文
=INDEX(配列,MATCH(検査値,検査範囲,0),列番号)
引数 | 説明 |
---|---|
配列 | データがまとめられている範囲。VLOOKUP関数でいう範囲(2番目の引数)。 |
検査値 | VLOOKUP関数でいう検索値(1番目の引数)。 |
検査範囲 | 検査値が上から何行目かを調べるときに使用。 |
列番号 | 配列の中で、左から何列目の値を表示させるかを指定。 |
この構文は以下のような仕組みになっています。
①まず、MATCH関数を用いて検査する値が指定した範囲の中で上から何行目にあるかを調べる。
②次に、INDEX関数を用いてMATCH関数で調べた行番号と指定した列番号にあたるセルの値を表示させる。
VLOOKUP関数と異なる点は、どの範囲で検索するか(検査範囲)を指定する必要がある点です。VLOOKUP関数はこの指定が不要で、自動的に指定した範囲の一番左の列で検索します。INDEX関数・MATCH関数を用いた上記の構文では検索する範囲を指定することで、検索する範囲より左側の列のデータを取得することが可能になります。
3.具体例
今回は、A2:D6の範囲に用意された名簿のデータ(A列出席番号、B列名前、C列フリガナ、D列誕生日)を用います。このデータを用いて、誕生日(D列)で検索して名前(B列)を表示させてみます。VLOOKUP関数を用いる場合はこのデータを加工して誕生日を一番左の列にする必要がありますが、INDEX関数・MATCH関数であればそのまま使うことができます。
まず、配列にはデータがある範囲(A2:D6)を選択します。次に検査値には検索する値が入力されたセル(B8)を指定します。そして、検査値を検索する検査範囲を指定します。今回は誕生日で検索をするので、D2:D6を指定します。最後に、配列として指定したデータ範囲(A2:D6)の中で今回は左から2列目の名前(B列)を表示させるので、列番号に2を入力します。
まとめ
今回は、INDEX関数・MATCH関数を用いて、VLOOKUP関数のように検索し左側の列を取得する方法を紹介しました。
=INDEX(配列,MATCH(検査値,検査範囲,0),列番号)
以上、参考になれば幸いです。