「指定した商品名から、左の列にある商品番号を検索したい…」
VLOOKUP関数に慣れている方ほど、このような「逆引き」検索ができず、もどかしい思いをした経験があるのではないでしょうか。
そんなVLOOKUP
の弱点をすべて解決するのが、INDEX
関数とMATCH
関数を組み合わせるという最強のテクニックです。今回は、この2つの関数を組み合わせ、どんな方向からでもデータを自在に抽出する方法をマスターしましょう。
今回のゴール:物品名から対応する「物品番号」を検索する
以下の「物品リスト」があります。
VLOOKUP
では検索できない、E列の「物品名」を使って、その左側にあるD列の「物品番号」をB3セルに表示させることが目標です。 1
サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。
Excel-g727-1.xlsx (ダウンロード)
まずは、以下のサンプルデータを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 |
解決策:INDEX関数とMATCH関数を組み合わせる
セルB3に、以下の数式を入力します。
Excel
=INDEX(D3:D7, MATCH(B2, E3:E7, 0))
この数式を入力すると、「B103」という物品番号が正しく表示されます。 2
数式の解説(内側から外側へ)
この数式は、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スキルが飛躍的に向上することは間違いありません。ぜひ、日々の業務で活用してみてください。
コメント