「指定した商品名から、左の列にある商品番号を検索したい…」
VLOOKUP関数に慣れている方ほど、このような「逆引き」検索ができず、もどかしい思いをした経験があるのではないでしょうか。
そんなVLOOKUPの弱点をすべて解決するのが、INDEX関数とMATCH関数を組み合わせるという最強のテクニックです。今回は、この2つの関数を組み合わせ、どんな方向からでもデータを自在に抽出する方法をマスターしましょう。
今回のゴール:物品名から対応する「物品番号」を検索する
以下の「物品リスト」があります。
VLOOKUPでは検索できない、E列の「物品名」を使って、その左側にあるD列の「物品番号」をB3セルに表示させることが目標です。 1
解決策:INDEX関数とMATCH関数を組み合わせる
手順:B3 に INDEX と MATCH の式を入れて Enter
物品名(B2)から、表の左の列にある物品番号を取り出します。VLOOKUP では左の列を取り出せないので、INDEX と MATCH を組み合わせます。 B3 に次の式を入力して、Enter キーを押します❶。
=INDEX(D3:D7,MATCH(B2,E3:E7,0)) D3:D7B2E3:E7紫に「取り出したい列」、オレンジに「探す値」、青に「探す列」を入れます。最後の 0(完全一致)はそのままです。例:氏名(H2)から、左の A 列にある社員番号
=INDEX(A2:A100,MATCH(H2,C2:C100,0)) - 紫と青の範囲は、同じ行(ここでは 3〜7 行目)にそろえます。ずれると違う行の値が返ります。

確認:B103 は「ぶどう」と同じ 3 番目の物品番号

答えは B103 になりました❷。式は、次の順に計算しています。
- 「ぶどう」が物品名の列(E3:E7)の何番目かを MATCH で調べる
⇒ 3 番目 - INDEX で、物品番号の列(D3:D7)の 3 番目を取り出す
⇒ B103
=MATCH(B2,E3:E7,0) だけを入れると 3 になります。INDEX はこの「3」を受け取って、物品番号の 3 番目を返しています。まず動かしてみよう|この記事のサンプルをその場で試せます
練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。
サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。
まずは、以下のサンプルデータをExcelシートにコピーして、操作の準備をしてください。
| A | B | C | D | E | F | |
| 1 | 商品番号検索 | 物品リスト | ||||
| 2 | 物品名 | ぶどう | 物品番号 | 物品名 | 価格 | |
| 3 | 位置 | (ここに数式を入力) | B101 | 桃 | ¥700 | |
| 4 | B102 | メロン | ¥1,050 | |||
| 5 | B103 | ぶどう | ¥800 | |||
| 6 | E101 | 人参 | ¥200 | |||
| 7 | E102 | かぼちゃ | ¥330 |
数式の解説(内側から外側へ)
この数式は、MATCH関数をINDEX関数の中に入れる「入れ子(ネスト)」構造になっています。理解のコツは、内側のMATCH関数から読み解くことです。
ステップ1:MATCH関数で「位置」を特定する
まず、内側の
MATCH(B2, E3:E7, 0)の部分が実行されます。 3
- これは「
B2セルにある”ぶどう” 4444が、E3:E7の範囲 5555の中で、上から何番目にあるか(完全一致 6 で)調べて」という命令です。 - 結果として、”ぶどう”は範囲の中で3番目にあるため、
MATCH関数は数値の「3」を返します。
ステップ2:INDEX関数で値を「取り出す」
次に、外側のINDEX関数が、MATCH関数の返した結果(3)を使って動作します。
- 数式全体は、
=INDEX(D3:D7, 3)と同じ意味になります。 7 - これは「
D3:D7の範囲(物品番号の列) 8 の中から、3番目の値を取り出して」という命令です。 - 結果として、
D3:D7の3番目の値である「B103」が最終的な答えとしてセルに表示されます。
なぜVLOOKUPよりINDEX & MATCHなのか?
この組み合わせは、VLOOKUPに比べて圧倒的に柔軟で強力です。
- 左右を問わない検索:
VLOOKUPと違い、検索列より左側にある値も簡単に取得できます。 - 列の挿入・削除に強い:
VLOOKUPは列番号を「4」のように数値で指定するため、後から列を挿入すると数式が壊れます。INDEX&MATCHは列そのものを範囲として指定するため、構成の変更に強いです。 - 動作が速い:データ量が多い場合、
VLOOKUPより計算負荷が軽いと言われています。
まとめ
MATCH関数で「行番号(位置)を探し」、その結果をINDEX関数に渡して「目的の列から値を取り出す」。この連携プレーこそが、Excel検索の王道テクニックです。
最初は少し複雑に感じるかもしれませんが、この使い方を一度マスターすれば、あなたのExcelスキルが飛躍的に向上することは間違いありません。ぜひ、日々の業務で活用してみてください。
INDEX&MATCHの基本をマスターしたら、次は「複数条件」での検索に挑戦してみましょう。こちらの記事で詳しく解説しています。

検索対象列の左側にあるデータをINDEX&MATCHで抽出する実践例はこちらです。

検索列より左の値を取り出すときは、XLOOKUPで逆引き検索する方法もあわせてご覧ください。
横方向に検索するときは、HLOOKUP関数の使い方もあわせてご覧ください。
