ExcelのINDEX MATCH関数の使い方!左側検索や列追加にも強い
INDEX関数とMATCH関数を組み合わせた検索方法を徹底解説。VLOOKUPではできない左側の検索や列の挿入に強い理由、縦横クロス検索、XLOOKUPとの使い分けまで分かりやすく紹介します。
著者 Ayoub Farid · · 4 分で読めます
INDEX MATCHは、XLOOKUPが登場する前から多くのデータアナリストに愛用されてきた定番の組み合わせです。現在でもすべてのExcelバージョンで動作し、左右どちらの方向でも検索でき、列を追加しても数式が崩れないという大きなメリットがあります。
2つの関数の基本構造
MATCH は、リスト内で特定の値が何番目にあるか(位置)を検索します。
=MATCH("Latte",B2:B4,0) → 2
(「Latte」は2番目にあります。末尾の「0」は完全一致を表します。)
INDEX は、指定した位置にあるセルの値を返します。
=INDEX(C2:C4,2) → C2:C4の範囲で2番目にある値
2つを組み合わせる
=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
| A | B | C | |
|---|---|---|---|
| 1 | Code | Product | Price |
| 2 | P-101 | Espresso | 2.50 |
| 3 | P-102 | Latte | 3.50 |
| 4 | P-103 | Tea | 2.00 |
セルF2に入力された商品の価格を調べる場合:
=INDEX($C$2:$C$4,MATCH(F2,$B$2:$B$4,0))
商品コードを調べる場合(VLOOKUPでは対応できない、検索列より左側の値を取得):
=INDEX($A$2:$A$4,MATCH(F2,$B$2:$B$4,0))
INDEX MATCHが選ばれる理由
- 検索列の右側だけでなく、左側の値も取得できる
- 列番号ではなくセル範囲を直接参照するため、列を挿入しても数式が壊れない
- すべてのExcelバージョンおよびGoogleスプレッドシートで問題なく動作する
縦と横のクロス検索(2方向検索)
行と列が交差する位置にある値も簡単に取得できます。例えば、地域(行)と月(列)の売上を検索する場合は次のようになります。
=INDEX($B$2:$M$5,MATCH(P1,$A$2:$A$5,0),MATCH(P2,$B$1:$M$1,0))
1つ目のMATCH関数で行番号を特定し、2つ目のMATCH関数で列番号を特定しています。
最後の「0」を忘れずに
末尾の「0」を省略して MATCH(x,range) と入力すると、近似一致が適用されるため、データがあらかじめ並べ替えられている必要があります。商品名やコード番号などを検索する場合は、必ず「0」を指定してください。
INDEX MATCH と XLOOKUP の違い
XLOOKUPが使える環境であれば、より短い数式で同じ処理を行うことができます。ただし、旧バージョンのファイルを開く機会がある方や、就職・転職のExcelスキルテスト対策としても、INDEX MATCHを理解しておく価値は十分にあります。位置検索の仕組みについてさらに詳しく知りたい方は、MATCH関数の解説もご覧ください。
よくある質問
VLOOKUPの代わりにINDEX MATCHを使うメリットは何ですか?
検索キーより左側の値を取得でき、途中に列を追加してもエラーにならず、すべてのExcelバージョンで動作する点です。
MATCH関数の「0」にはどのような意味がありますか?
完全一致を指定するための引数です。「0」を省略すると、データが昇順に並べ替えられている前提の近似一致になります。
INDEX MATCHはVLOOKUPよりも処理速度が速いですか?
非常にデータ量が多い表計算シートでは速くなる場合がありますが、通常のファイルでは体感できるほどの差はありません。
INDEX MATCHはGoogleスプレッドシートでも使えますか?
はい、まったく同じ構文で使用できます。