タスクラボ関数リファレンス > INDEX+MATCH

INDEX関数+MATCH関数の使い方

対応: すべてのExcel・Google スプレッドシート

INDEX(位置から値を取り出す)と MATCH(値から位置を探す)を組み合わせると、VLOOKUPより柔軟な検索ができます。XLOOKUPが使えない古いExcelでの定番です。

構文

=INDEX(取り出す範囲, MATCH(検索値, 検索する範囲, 0))
部品構文役割
MATCHMATCH(検索値, 範囲, 0)検索値が範囲の何番目にあるかを返す。0=完全一致
INDEXINDEX(範囲, 行番号)範囲のN番目の値を返す

基本の例(左側検索)

A列=社員番号、B列=氏名の表で、氏名から社員番号を出す(VLOOKUPでは不可能な向き):

=INDEX(A2:A100, MATCH("田中", B2:B100, 0))
→ MATCHが「田中はB列の何行目か」を返し、INDEXがA列の同じ行を取り出す

クロス表検索(行と列の両方から)

行見出し=支店(A列)、列見出し=月(1行目)の売上クロス表から、大阪支店の3月を取る:

=INDEX(B2:M20, MATCH("大阪", A2:A20, 0), MATCH("3月", B1:M1, 0))

MATCHの照合の種類

第3引数意味前提
0完全一致。通常はこれなし
1(省略時)検索値以下の最大値昇順に並んでいること
-1検索値以上の最小値降順に並んでいること
いま新規で書くなら XLOOKUP のほうが簡潔です。INDEX+MATCHが今も重要なのは、Excel 2019以前のファイルでも動くことと、既存の帳票で大量に使われているためです。
#N/A はMATCH側で出ます。まず MATCH(...) 単体をセルに入れて、位置が返るかを確かめると切り分けが速いです。

関連