cellio

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))
ABC
1CodeProductPrice
2P-101Espresso2.50
3P-102Latte3.50
4P-103Tea2.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スプレッドシートでも使えますか?

はい、まったく同じ構文で使用できます。

あわせて読みたい