INDEX関数とMATCH関数の使い方|VLOOKUPでできない左の列を取り出す
※写真はイメージです
書き方はこれだけ
=INDEX(取り出す列, MATCH(探す値, 探す列, 0))MATCHで「探す値が上から何番目にあるか」を調べて、INDEXで「取り出す列のその番目」を取り出します。VLOOKUPと違って、探す列より左にある値も取り出せるのが強みです。新しいExcelならXLOOKUPでも同じことができます。
この図の表をExcelファイルでダウンロード(問題と答えのシートつき)
まずMATCHだけで試す
INDEXとMATCHを組み合わせる前に、MATCHだけを入れて正しい番号が出るかを確かめると、どこで間違えたかが分かりやすくなります。
VLOOKUP・XLOOKUPとの違い
| VLOOKUP | INDEX+MATCH | XLOOKUP | |
|---|---|---|---|
| 左の列を取り出せる | × | ○ | ○ |
| 列を足しても式がずれない | ×(何列目かがずれる) | ○ | ○ |
| 書きやすさ | ○ | △(2つ組み合わせる) | ○ |
| 使えるExcel | すべて | すべて | Microsoft 365・2021以降 |
XLOOKUPがあるならそっちのほうが楽です。ただ、古いExcelの職場や、取引先にファイルを渡すことが多いなら、どの版でも動くINDEX+MATCHを1回覚えておくと困らないと思います。
うまくいかないとき
1#N/A になる
探す値が探す列にない、空白や全角・半角が違う、などで見つかっていません。
直し方MATCHだけを入れて、番号が出るか確かめます。
2違う人の値が出る
MATCH(E2,B2:B5,1)MATCH(E2,B2:B5,0)最後を 0 にしていないので、近い値を探しています。
直し方最後は 0 にします。
3下へコピーしたらずれた
取り出す列と探す列に $ が付いていません。
直し方$A$2:$A$5 のように固定します。
4取り出す列と探す列の行がそろっていない
A2:A5 と B3:B6A2:A5 と B2:B52つの範囲の始まりの行が違うと、1行ずれた値が出ます。
直し方同じ行から同じ行までにそろえます。
サンプルファイルで試す
黄色のセルにINDEX+MATCHの式を入れて、「答え」のシートと比べてください。
indexmatch.xlsx をダウンロード(無料・登録なし)
よくある質問
INDEXとMATCHはどんなときに使いますか?
探す列より左にある値を取り出したいとき、列の追加で式がずれないようにしたいとき、古いExcelでも動く式にしたいときに使います。
XLOOKUPがあればINDEX+MATCHはいりませんか?
XLOOKUPが使えるならほとんど置き換えられます。ただしExcel 2019以前では使えないので、ファイルを渡す相手の環境が分からないときはINDEX+MATCHが安全です。
Googleスプレッドシートでも使えますか?
はい。INDEX・MATCHともそのまま使えます。
一緒に覚えたい関数・操作
このページについて
操作の説明は Microsoft 365 の日本語版Excel(Windows)に合わせています。図はこのサイトで作ったもので、表の会社名・商品名・人名は架空です。運営者情報