INDEXとMATCHの使い方|VLOOKUPでできない左の列も検索する

INDEXとMATCHの使い方|VLOOKUPでできない左の列も検索する

「指定した商品名から、左の列にある商品番号を検索したい…」

VLOOKUP関数に慣れている方ほど、このような「逆引き」検索ができず、もどかしい思いをした経験があるのではないでしょうか。

そんなVLOOKUPの弱点をすべて解決するのが、INDEX関数とMATCH関数を組み合わせるという最強のテクニックです。今回は、この2つの関数を組み合わせ、どんな方向からでもデータを自在に抽出する方法をマスターしましょう。

目次

今回のゴール:物品名から対応する「物品番号」を検索する

以下の「物品リスト」があります。

VLOOKUPでは検索できない、E列の「物品名」を使って、その左側にあるD列の「物品番号」をB3セルに表示させることが目標です。 1

解決策:INDEX関数とMATCH関数を組み合わせる

手順:B3 に INDEX と MATCH の式を入れて Enter

物品名(B2)から、表の左の列にある物品番号を取り出します。VLOOKUP では左の列を取り出せないので、INDEX と MATCH を組み合わせます。 B3 に次の式を入力して、Enter キーを押します❶。

B3 に入れる式
=INDEX(D3:D7,MATCH(B2,E3:E7,0))
D3:D7 配列(物品番号)B2 検索値E3:E7 検査範囲(物品名)
ひとことで「ぶどう」が物品名の列の何番目かを調べ、物品番号の列の同じ番目を取り出す
式を分けて読むと(色は画像の枠と同じ)
配列D3:D7
どの列から取り出す?
→ 物品番号の列(探す列の左でもよい)
検索値B2
何を探す?
→ B2 の「ぶどう」
検査範囲E3:E7
どこで探す?
→ 物品名の列
自分の表で使うときは
紫に「取り出したい列」、オレンジに「探す値」、青に「探す列」を入れます。最後の 0(完全一致)はそのままです。例:氏名(H2)から、左の A 列にある社員番号=INDEX(A2:A100,MATCH(H2,C2:C100,0))
  • 紫と青の範囲は、同じ行(ここでは 3〜7 行目)にそろえます。ずれると違う行の値が返ります。
エクセルのINDEX関数とMATCH関数で物品名から左の列の物品番号を取り出す式と、配列・検索値・検査範囲を色分けした画面
エクセルのINDEX関数とMATCH関数で物品名から左の列の物品番号を取り出す式と、配列・検索値・検査範囲を色分けした画面

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

エクセルのMATCH関数でぶどうが3番目と分かり、INDEX関数で物品番号の3番目B103を取り出したことを色で示した画面
エクセルのMATCH関数でぶどうが3番目と分かり、INDEX関数で物品番号の3番目B103を取り出したことを色で示した画面

答えは B103 になりました❷。式は、次の順に計算しています。

  1. 「ぶどう」が物品名の列(E3:E7)の何番目かを MATCH で調べる
    ⇒ 3 番目
  2. INDEX で、物品番号の列(D3:D7)の 3 番目を取り出す
    ⇒ B103
ヒント:MATCH だけを入れると「3」
B3 に =MATCH(B2,E3:E7,0) だけを入れると 3 になります。INDEX はこの「3」を受け取って、物品番号の 3 番目を返しています。

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。

練習用Excelファイル(無料ダウンロード)
この記事の解説で使うExcelデータです。数式と練習データが入っているので、本文の式を同じ表で試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

まずは、以下のサンプルデータをExcelシートにコピーして、操作の準備をしてください。

ABCDEF
1商品番号検索物品リスト
2物品名ぶどう物品番号物品名価格
3位置(ここに数式を入力)B101桃¥700
4B102メロン¥1,050
5B103ぶどう¥800
6E101人参¥200
7E102かぼちゃ¥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関数の使い方もあわせてご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次