すべてのツール

エクセル INDEX/MATCH

excel-indexmatch

• MATCHで位置を探し、INDEXで値を取り出す流れをアニメーションで表示。 • VLOOKUPと違い、検索列の左側の値も取り出せます。

① 検索する商品コード
ABC
1商品名商品コード価格
2ワイヤレスマウスA10125,000ウォン
3メカニカルキーボードA10289,000ウォン
4USB-C ハブA10342,000ウォン
527インチモニターA104320,000ウォン
6ノートパソコンスタンドA10538,000ウォン
7FHD ウェブカメラA10655,000ウォン
8Bluetooth スピーカーA10767,000ウォン
i商品コードを選んで「検索を実行」を押してください。
MATCH 検索中(B列)位置を発見INDEX が返す
=INDEX($A$2:$A$8, MATCH("A104", $B$2:$B$8, 0))

💡 商品コードを変えるだけで商品名が自動で変わります。VLOOKUPと違い、検索列の左側の値も取り出せます。

商品名

INDEX/MATCH はこう読みます

MATCH で値の位置(N)を探し、INDEX でその位置の値を取り出します。VLOOKUPと違い、左の列も取り出せます。

MATCHMATCH(コード, B列, 0) — 商品コード列で探す値の位置(行番号)を求めます。末尾の 0 は完全一致。
INDEXINDEX(A列, 位置) — MATCH が求めた位置で商品名列のその値を返します。
?なぜ INDEX/MATCH? — VLOOKUPは一番左の列でしか探せませんが、INDEX/MATCHは探す列と返す列を自由に決められます(左もOK)。

IFERROR で囲むと、存在しないコードは #N/A ではなく「コードなし」と表示されます。

VLOOKUPではなくINDEX/MATCHを使う理由

INDEX/MATCHは結果こそVLOOKUPと同じですが、使える場面が広いです。MATCHが値の位置(何行目か)を求め、INDEXがその位置の値を取り出す2段構造なので、探す列と取得する列を自由に決められます。

つまり、取得したい値が探す値より左にあっても構いません。VLOOKUPは構造上これができず、列の順番を入れ替えたり作業列を追加したりすることになりますが、INDEX/MATCHならその必要がありません。

表を長く使うほど差が大きくなります。VLOOKUPは取得列を番号で指定するため、途中で列を1つ挿入すると別の値を返し始めます。INDEX/MATCHは列そのものを指すのでそのまま動きます。最初は長く見えても、あとが楽です。

よくある質問

INDEX MATCH の順番がいつも分からなくなります

=INDEX(取り出す列, MATCH(探す値, 探す列, 0)) の形を1つ覚えれば十分です。内側の MATCH が先に何番目かを求め、その数字を受け取って INDEX が値を取り出します。上のデモで M の段階と I の段階が分かれて動くのを見ると順番が定着します。

MATCH の最後に付く 0 は何ですか?

照合の種類です。0は完全に一致する値だけを探し、1と-1は並べ替えられた表で近似値を探します。0を省くと既定の1が使われ、並べ替えていない表では見当違いの位置を返すため、理由がなければ常に0を書きましょう。

INDEX MATCH で #N/A が出ます

MATCH が値を見つけられなかったという意味です。探す値と探す列のどちらかに空白が混じっていたり、数値と文字列が混在していることが多いです。見つからないのが想定内であれば =IFERROR(INDEX(...),"該当なし") で囲んで好きな文言を表示できます。

INDEX と MATCH の範囲がずれていても大丈夫ですか?

行数と開始行はそろえる必要があります。MATCH が返すのは範囲内で何番目かという位置なので、MATCH は2行目から、INDEX は1行目からだと結果が1つずれます。エラーが出ずに静かに間違う種類のミスなので特に注意が必要です。

行と列の両方を条件にして値を取り出せますか?

MATCH を2回使います。=INDEX(表, MATCH(行の条件, 行見出し, 0), MATCH(列の条件, 列見出し, 0)) と書けば、行と列が交わるセルの値が取れます。VLOOKUP なら列番号を書き換えていた作業が、数式1つで済みます。

INDEX MATCH と XLOOKUP はどちらを使うべきですか?

XLOOKUP は1つの関数で完結し、見つからないときに表示する値も引数で指定できるので簡単です。ただし比較的新しいバージョンでしか動かないため、古いエクセルとファイルをやり取りする環境では、どこでも開ける INDEX/MATCH が安全です。