MATCHwithINDEX を使用すると、VLOOKUP よりも柔軟な検索数式を作成できます。この結合は、しばしばINDEX-MATCHと呼ばれます。
この売上データテーブルを使って、INDEX-MATCHを実演するシナリオを示します:
| A | B | C | 17 才以上対象 | |
|---|---|---|---|---|
| 1 | 名称 | 地域 | 売上高 | 委員会 |
| 2 | アリス | 北 | 5000 | 500 |
| 3 | ボブ | 南 | 6000 | 600 |
| 4 | チャーリー | 東 | 4500 | 450 |
| 5 | ダウド | 西 | 5500 | 550 |
| 6 | イヴ | 北 | 4800 | 480 |
では、名称から営業マンのコミッションを調べるとしましょう。等価なINDEX-MATCHとVLOOKUPの数式を示します:
- INDEX-MATCH:
=INDEX(D2:D6,MATCH("Bob",A2:A6,0))
- VLOOKUP:
=VLOOKUP("Bob",A2:D6,4,FALSE)
どちらの数式も600 を返却します。
INDEX-MATCHがより柔軟である理由はここにあります:
- 列の独立性: VLOOKUPでは、返却値(commission)を含む列は常にルックアップ列(名称)の右側になければならず、どの列が目的のデータを含むかを指定するために列を数える必要があります(この場合は4)。
INDEX-MATCHの場合、返却列はテーブルのどこにあってもかまいません。CommissionがB列にあるように列を並べ替えると、INDEX-MATCH数式を簡単に調整できます(D2:D6をB2:B6に置換)。=INDEX(B2:B6,MATCH("Bob",A2:A6,0))
このシナリオでは、VLOOKUP数式は分割されます。 - 左の検索: VLOOKUP は範囲の左端の列の値しか検索できません。手数料の値から名称を調べたい場合は、VLOOKUPは使えません。
=INDEX(A2:A6,MATCH(600,D2:D6,0))
これは "Bob "を返却します。 - パフォーマンス: 大きなデータセットでは、INDEX-MATCHはVLOOKUPよりも効率的です。