XLOOKUPが使えない時は、INDEXとMATCHで代わりにする
先に答え
XLOOKUPがない古いExcelでは、INDEX と MATCH を組み合わせれば、同じことができます。VLOOKUPが苦手な「探す列より左の値を出す」にも使えます。
- 確認した環境
- 【要記入:例 Excel 2019】
- 確認日
- 【要記入】
- 出典
- Microsoftサポート「XLOOKUP関数」「INDEX関数」「MATCH関数」(公開前にURLを記入)
XLOOKUPは、どのExcelで使える?
XLOOKUPは、新しいバージョン(Excel 2021以降、Microsoft 365)で使える関数です。Excel 2019以前では、入力しても使えません。会社のExcelが古いと、人からもらったファイルでエラーになることがあります。
自分のExcelで使えるかは、=XLOOKUP( と入力して、候補が出るかで分かります。
今回の例
商品コードから、商品名を出したい場合です。商品名は、コードより左にあります。
| A | B | C | |
|---|---|---|---|
| 1 | 商品名 | コード | 価格 |
| 2 | りんご | A001 | 120 |
| 3 | みかん | A002 | 80 |
| 4 | ぶどう | A003 | 300 |
VLOOKUPは、探す列より右しか出せません。ここでINDEXとMATCHの出番です。
手順:コードA002の商品名を出す
- 空いているセルをクリックします。
- 次の式を入力します。
=INDEX($A$2:$A$4,MATCH("A002",$B$2:$B$4,0)) - Enterを押します。みかんと出れば成功です。
何をしている式なのか
2つの関数が、役割を分けています。
| 関数 | 役割 | 今回の結果 |
|---|---|---|
MATCH | 探したいものが、何番目にあるか調べる | MATCH("A002",$B$2:$B$4,0) → 2 |
INDEX | 指定した列の、○番目の値を取り出す | INDEX($A$2:$A$4,2) → みかん |
つまり、「A002は2番目」と調べて、「商品名の列の2番目を出す」という流れです。
MATCH の最後の 0 は、ぴったり一致で探す指定です。VLOOKUPの FALSE と同じ意味です。
XLOOKUPとの対応
| 新しいExcel | =XLOOKUP("A002",$B$2:$B$4,$A$2:$A$4) |
|---|---|
| 古いExcel | =INDEX($A$2:$A$4,MATCH("A002",$B$2:$B$4,0)) |
XLOOKUPの「探す列」と「出す列」を、INDEXとMATCHに振り分けると考えると分かりやすいです。
つまずきやすい3点
- 範囲の行数を、そろえます。INDEXの範囲とMATCHの範囲は、同じ行数にします。
- 最後の0を忘れないでください。省略すると、意図しない結果になります。
- #N/Aが出たら、VLOOKUPの#N/Aと同じ原因(空白、数字と文字の違い)を疑います。
迷ったら、これだけ!
この形に、自分の列を当てはめてください。
=INDEX(出したい列, MATCH(探したいもの, 探す列, 0))
- 出したい列と探す列の行数が同じ
- MATCHの最後に
0を付けた - 範囲に
$を付けた
広告