(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Excel】VLOOKUP検索にて表の右側にキーがある場合の対応法

スポンサーリンク

概要

VLOOKUPでは検索キーが一番左側にある前提で利用しますが、例えば以下の表のように検索キーが右側にある場合もあります。要は左側に出力したい情報が格納されている場合。

A B C
1 値段 商品名 コード
2 100 りんご abc
3 200 いちご def
4 150 みかん hij
5 150 ばなな klm

列が並びかえれない場合は、MATCH関数とINDEX関数を利用することで例えば以下のようにE列に検索キーを入れてF列に該当する情報を出力することが可能です。

E F
1 コード 値段
2 hij =INDEX(A$2:C$5,MATCH(E2,C$2:C$5,0),1)

以下、それぞれの関数の意味を分かりやすく解説しました。

MATCH関数の役割

MATCH関数は以下の構文で利用して検索キーと完全合致する行数を取得できます。

=MATCH(検索キー,検索エリア,0)

例えば以下の表にて

A B C
1 値段 商品名 コード
2 100 りんご abc
3 200 いちご def
4 150 みかん hij
5 120 ばなな klm

E列に以下のコードを入れるとF列に行数が出ます。

E F
1 コード 値段
2 klm =MATCH(E2,C$2:C$5,0)

↓計算結果↓

E F
1 コード 値段
2 klm 4

確かに検索エリア(C$2:C$5)から欲しい文字列を探して何行目かを返しています。

注意点はコードが一意であることは前提です。例えば以下のように複数ヒットする場合は

A B C
1 値段 商品名 コード
2 100 りんご abc
3 200 いちご klm
4 150 みかん hij
5 120 ばなな klm

以下のように最初のヒットが返り値になります。

E F
1 コード 値段
2 klm 2

INDEX関数の役割

INDEX関数の構文は以下で、それにより指定したセルの値が取得できます。

=INDEX(表のエリア,何行目,何列目)

同じく以下の表にして

A B C
1 値段 商品名 コード
2 100 りんご abc
3 200 いちご def
4 150 みかん hij
5 120 ばなな klm

任意のセルに以下を入力すれば2行目の2列目という指定なので「いちご」が返ってきて

=INDEX(A$2:C$5,2,2)

以下のようにすれば3行目の1列目という指定なのでみかんの値段である「150」が返ってきます。

=INDEX(A$2:C$5,3,1)

二つの関数を組み合わせる

=INDEX(表のエリア,MATCH(検索文字列,検索列,0),何列目)

とすればMATCH関数にて行が特定できるのでVLOOKUPのような検索が行えます。

E F
1 コード 値段
2 hij =INDEX(A$2:C$5,MATCH(E2,C$2:C$5,0),1)

という計算式にて

E F
1 コード 値段
2 hij 150

が返ってくるというわけです。これが冒頭の計算式です。

終わりに

VLOOKUPの応用のような使い方ですが、覚えておくと役立つと思います。