EXCELの関数VLOOKUP関数を使用することって結構多いと思うのですが、検索のキー項目が取り出す項目の左側にないと使用できないので不便に感じることがあります。

キー項目が右で左の列を取り出すことができないのかネットで調べてみたところ、やっぱりキー項目が左で右側の対象列にしか検索できないようなのです。
MicrosoftはなんでVLOOKUPを左側へ検索できるようにしてくれないのでしょう?

そこで左側へVLOOKUPする同等の手段(関数)を調べてみました。

ググるとLOOKUP関数やOFFSET関数とMATCH関数の組み合わせやINDEX関数とMATCH関数の紹介がありました。
色々と試してみるとLOOKUP関数はどうも検索キーがソートされてなきゅいけないようだし、OFFSET関数はなんかよく使い方がわからん。

ズバリ一番わかりやすく簡単だったのはINDEX関数とMATCH関数の組み合わせでした。


    A列  B列  C列  D列  E列
    ---------------
1行 | A | 1 |   | 3 |  |
    ---------------
2行 | B | 4 |   | 1 |  |
    ---------------
3行 | C | 3 |   |   |  |
    ---------------
4行 | D | 2 |   |   |  |
    ---------------

例えば上の表でE列にD列を検索値としてB列の値を検索してA列の値を取り出したい場合、
E1セルの関数は以下になります。

=INDEX(A:A,MATCH(D1,B:B,0))


簡単に関数の使い方を説明します。(EXCEL2007です)

①E1セルでINDEX関数を選択する。
②引数の選択がでるので「配列、行番号、列番号」を選択します。
③配列にA列(A:A)を指定します。
④行番号で「MATCH」関数を選択します。(EXCELの左上のINDEXとなっている部分でMATCHを選択)
⑤検索値に「D1」セルを指定、検索範囲にB列(B:B)を指定して照合の種類に「0」(ゼロ)を指定します。

この関数でE列に結果が入ります。(E2へも関数をコピーしてます)

    A列  B列  C列  D列  E列
    ---------------
1行 | A | 1 |   | 3 |  |
    ---------------
2行 | B | 4 |   | 1 |  |
    ---------------
3行 | C | 3 |   |   |   |
    ---------------
4行 | D | 2 |   |   |   |
    ---------------


この方法でVLOOKUP関数の左検索版が実現できました。

以上です。