エクセル INDEX/MATCH
excel-indexmatch• MATCHで位置を探し、INDEXで値を取り出す流れをアニメーションで表示。 • VLOOKUPと違い、検索列の左側の値も取り出せます。
① 検索する商品コード
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は列そのものを指すのでそのまま動きます。最初は長く見えても、あとが楽です。