INDEX・MATCHの使い方(VLOOKUPで足りないとき)
VLOOKUPは便利ですが、「左方向に探せない」「列を挿入すると壊れる」といった弱点があります。それを乗り越える定番が INDEX と MATCH の組み合わせです。少し慣れが要りますが、仕組みが分かれば怖くありません。実例で解説します。
それぞれの役割
- MATCH — 値が「何番目にあるか」を返します。
- INDEX — 範囲の「何番目」を取り出します。
つまり、MATCHで「探している行が何番目か」を求め、その番号をINDEXに渡して値を取り出す、という連携です。
MATCH:位置を調べる
=MATCH(検索キー, 探す範囲, 0)
最後の 0 は「完全一致」の意味です。たとえば A列で「バナナ」が上から3番目にあれば、
=MATCH("バナナ", A:A, 0) → 3
INDEX:位置から取り出す
=INDEX(取り出す範囲, 何番目)
B列の3番目を取り出すなら、
=INDEX(B:B, 3) → バナナの価格
組み合わせる
この2つを合体させます。MATCHが出した番号を、そのままINDEXに渡します。
=INDEX(B:B, MATCH("バナナ", A:A, 0))
「A列でバナナが何番目かを調べ、その番号のB列の値を返す」。これでVLOOKUPと同じ表引きができます。検索キーをセル参照にすれば実用的です。
=INDEX(B:B, MATCH(D2, A:A, 0))
VLOOKUPに対する利点
左方向にも探せる
VLOOKUPは検索列の右しか返せませんが、INDEX・MATCHは取り出す範囲と探す範囲が独立しているので、左でも右でも取得できます。
列の挿入に強い
VLOOKUPの「列番号」は数字で固定なので、途中に列を足すとズレて壊れます。INDEX・MATCHは列そのものを指定するため、挿入しても壊れにくいです。
つまずきポイント
#N/A: MATCHが見つけられていません。表記ゆれや余分な空白を確認。最後の引数が0(完全一致)になっているかも要チェック。- 範囲の高さをそろえる: INDEXの取り出す範囲と、MATCHの探す範囲は、同じ行の並びに対応している必要があります。
- 難しく感じるとき: まずMATCH単体、次にINDEX単体で結果を確かめ、最後に合体させると理解しやすいです。
VLOOKUP・XLOOKUPとの使い分け
今は XLOOKUP があるため、左方向検索やエラー処理はXLOOKUPで済むことも多いです。ただしINDEX・MATCHは対応環境が広く、複雑な参照にも応用が利くので、知っておくと強い武器になります。基礎のVLOOKUPの使い方と合わせて、表引きの引き出しを増やしましょう。