表から検索したい
多くのビジネスマンが日々様々なデータと獲得しているかと思います。
その中でも多いのが、「表から該当する項目を抽出する」という作業です。
ただ一概に表といっても、形式は様々で抽出したいデータも様々。
「自分はこれを探したいけど、膨大なデータからうまく探せない!」という人も多いはず。
そこで自由自在に検索を行えるのがINDEX+MATCH関数です。
VLOOKUP関数がダメなわけ
よく検索系の関数で耳にするのがVLOOKUP関数です。
「役に立つ関数」とか「使える関数」と言われ、
Excel中級者の目安ともされてます(個人の偏見も入ってます)。
確かにこのVLOOKUP関数は大変便利で、私もよく使用してます。
しかし、唯一最大の欠点があります。
それは「検索値が表の左にないと使えない」といった欠点です。
※VLOOKUP関数について詳しくはこちら
上記表では、「A社」「B社」から売上を検索できても、「A01」「A02」からの検索はできません。
検索値がどこにあっても探すには?
そこで検索値が右にあっても左にあっても検索できるのがINDEX+MATCH関数です。
まずINDEX関数とはどんな関数でしょうか?
テーブルまたはセル範囲にある値、あるいはその値のセル参照を返します。
書式はこうです。
=INDEX(配列, 行番号, [列番号])
要は「配列(範囲)の中から指定の行・列に該当する内容を返すよ」ってことですね。
ただこの「指定の」ってのが少しやっかいですね。
本来行・列番号は「1」とか「2」とか指定をするのですが、表から探す時点ではこの番号が分かりません。
そこでMATCH関数と組み合わせて使うのです!
範囲 のセルの範囲で指定した項目を検索し、その範囲内の項目の相対的な位置を返します。
書式はこうです。
=MATCH(検査値, 検査範囲, [照合の型])
実際にやりながらの方が分かりやすいので、解説を見ていきましょう。
解説
企業コードから売上高を探したいリストです。
INDEX+MATCH関数で目的のセルを探します。
まずINDEX関数で範囲を指定します。
=INDEX(B3:D10,
次に行番号を指定しますが、今回行番号が分からないのでMATCH関数で検索値を指定して検索します。
=INDEX(B3:D10,MATCH(F3,
次に検索値の検索範囲を指定します。
今回は企業コードで引っ張りたいので、D3からD10となります。
=INDEX(B3:D10,MATCH(F3,D3:D10,
次は検索の一致についてですが、ここは基本「0」で問題ありません。
=INDEX(B3:D10,MATCH(F3,D3:D10,0),
MATCH関数は終わりINDEX関数に戻ってきましたが、
次の列番号についても分からないため再びMATCH関数で検索します。
今回は売上高を探したいのでG2を選択します。
=INDEX(B3:D10,MATCH(F3,D3:D10,0),MATCH(G2,
次は「売上高」の項目を探したいので、B2からD2を選択します。
=INDEX(B3:D10,MATCH(F3,D3:D10,0),MATCH(G2,B2:D2,
最後に検索の一致については「0」を入力します。
これで企業コード「A05」の売上高を抽出することができました。
まとめ
今回は1つの関数ではなく、2つの関数の組み合わせをご紹介しました。
恐らく1つの関数を使用するよりも少し難しかったと思います。
2つになることで()の個数を間違えたり、どこまで記載したか分からなくなったりします。
私も最初はそうでした。
関数を2つ以上組み合わせる時のコツは分解です。
別々のセルに関数を1個ずつ書き出して、
それぞれの関数を作成してから入れていくとスムーズに作成できます。
また作成方法についてもいずれご紹介しますね。
それではまた。