XLOOKUP関数の練習問題(全5問)
色のついたセルに数式を入力して Enter。範囲はドラッグでも選べます。
コードから商品名を取り出す
B8 に、B7 のコードに対応する商品名を XLOOKUP で取り出してください。
ヒント 1
「=XLOOKUP(検索値, 検索範囲, 戻り範囲)」の形です。列番号は使いません。
ヒント 2
探すのは A列、取り出すのは B列。「=XLOOKUP(B7,A2:A4,B2:B4)」。
解説を見る
VLOOKUP のように表全体と列番号を渡すのではなく、探す列と取り出す列をそれぞれ範囲で指定します。列番号を数えないので、表の途中に列を挿入しても式が壊れません。完全一致が既定なので FALSE も不要です。
模範解答: =XLOOKUP(B7,A2:A4,B2:B4)
商品名からコードを引く(左方向)
B8 に、B7 の商品名に対応するコードを取り出してください。取り出す列は検索する列より左にあります。
ヒント 1
探すのは B列(商品名)、取り出すのは A列(コード)です。
ヒント 2
範囲を書く順番がそのまま意味になります。「=XLOOKUP(B7,B2:B4,A2:A4)」。
解説を見る
VLOOKUP は検索する列より右しか取り出せないため、この向きは扱えませんでした。XLOOKUP は探す範囲と取り出す範囲が独立しているので、左右どちらでも構いません。表を並べ替える必要がなくなります。
模範解答: =XLOOKUP(B7,B2:B4,A2:A4)
見つからないときの表示を決める
B8 に、B7 のコードに対応する商品名を取り出してください。見つからないときは「該当なし」と表示します。
ヒント 1
見つからないときの表示は4つめの引数に書きます。IFERROR で包む必要はありません。
ヒント 2
「=XLOOKUP(B7,A2:A4,B2:B4,"該当なし")」。文字は " で囲みます。
解説を見る
4つめの引数は「見つからなかったとき」だけ働きます。IFERROR で包むと式の中のエラーをすべて隠してしまい、範囲の書き間違いによる #VALUE! まで「該当なし」に化けます。XLOOKUP の4つめのほうが、隠す範囲が狭いぶん安全です。
模範解答: =XLOOKUP(B7,A2:A4,B2:B4,"該当なし")
点数からランクを求める
B8 に、B7 の点数に対応するランクを求めてください。区切りの表を使い、点数以下で最も大きい行を選びます。
ヒント 1
完全に一致する行が無いので、5つめの引数で照合の種類を指定します。
ヒント 2
「点数以下で最も大きい行」なので -1。「=XLOOKUP(B7,A2:A5,B2:B5,"-",-1)」。
解説を見る
5つめの引数に -1 を指定すると、完全一致がない場合に「検索値以下で最も大きい値」の行が選ばれます。75点なら 60 の行が選ばれて C です。ちょうど 80 のときは完全一致が優先されて B になります。1 を指定すると逆に「検索値以上で最も小さい値」になります。
模範解答: =XLOOKUP(B7,A2:A5,B2:B5,"-",-1)
部分一致で探す
B8 に、商品名が「みかん」で始まる行の価格を取り出してください。ワイルドカードを使います。
ヒント 1
XLOOKUP は既定が完全一致なので、そのままでは * が文字として扱われます。
ヒント 2
5つめの引数に 2 を指定します。「=XLOOKUP(B7,A2:A4,B2:B4,"-",2)」。
解説を見る
XLOOKUP でワイルドカードを使うには、5つめの引数に 2 を指定する必要があります。指定しないと「みかん*」という文字そのものを探してしまい、見つかりません。VLOOKUP は完全一致でもワイルドカードが効くため、ここだけ挙動が違います。
模範解答: =XLOOKUP(B7,A2:A4,B2:B4,"-",2)
XLOOKUP関数は、検索する範囲と取り出す範囲を別々に指定して値を探す関数です。VLOOKUPの弱点を解消した後継にあたります。
- 書き方
=XLOOKUP(検索値, 検索範囲, 戻り範囲)- 例
=XLOOKUP(B7,A2:A4,B2:B4)
XLOOKUP関数とは
XLOOKUP(エックスルックアップ)関数は、表から目的の値を探して取り出す関数です。VLOOKUP と目的は同じですが、VLOOKUP が苦手だったところを作り直した後継にあたります。
VLOOKUP を使っていて、こう思ったことがあるなら XLOOKUP の出番です。
- 列番号を数えるのが面倒。列を挿入したら式が壊れた
- 検索する列より左の列を取り出したいのにできない
FALSEの付け忘れで、たまに違う行が返ってくる- 見つからないときの
#N/Aを消すのに、毎回 IFERROR で包んでいる
これらは全部、XLOOKUP では起きません。
3つの引数
=XLOOKUP(検索値, 検索範囲, 戻り範囲)
| 位置 | 意味 |
|---|---|
| 1つめ | 探したい値 |
| 2つめ | どこを探すか(1列だけ) |
| 3つめ | どこから取り出すか(1列だけ) |
VLOOKUP は「表全体」と「左から何列目か」を渡しました。XLOOKUP は探す列と取り出す列を、それぞれ直接指定します。
=VLOOKUP(B7,A2:C4,2,FALSE) ← 表全体と列番号
=XLOOKUP(B7,A2:A4,B2:B4) ← 探す列と取り出す列
VLOOKUPとの違い
| VLOOKUP | XLOOKUP | |
|---|---|---|
| 列の指定 | 番号で数える | 範囲で指定する |
| 列を挿入したとき | 式が壊れる | 壊れない |
| 検索列より左 | 取り出せない | 取り出せる |
| 完全一致 | FALSE が必要 |
既定が完全一致 |
| 見つからないとき | #N/A |
4つめの引数で指定できる |
とくに大きいのが上の2つです。VLOOKUP の列番号は「表の左端から何番目か」なので、表の途中に列を1つ挿入すると、式は何も言わずに違う列を返します。エラーが出ないぶん、間違いに気づきません。
XLOOKUP は取り出す範囲そのものを指しているので、列が増えても参照はついて動きます。
左の列を取り出せる
VLOOKUP の最大の制約が「検索列より右しか取り出せない」ことでした。商品名から商品コードを引きたい、といった逆方向ができません。
XLOOKUP は探す範囲と取り出す範囲が独立しているので、左右どちらでも構いません。
=XLOOKUP("バナナ",B2:B4,A2:A4) → B01
表を作り直したり、列を並べ替えたりする必要がなくなります。
つまずきポイント1: 見つからないときの表示は4つめに書く
見つからないときは #N/A が返ります。これを別の表示にしたいときは、4つめの引数に書きます。
=XLOOKUP(B7,A2:A4,B2:B4,"該当なし")
VLOOKUP では IFERROR で包む必要がありましたが、XLOOKUP は自前で持っています。
こちらのほうが安全です。IFERROR は式の中で起きたエラーをすべて隠すため、列番号の間違いによる #REF! まで「該当なし」に化けてしまいます。4つめの引数は見つからなかったときだけ働くので、他のエラーは隠しません。
つまずきポイント2: 既定ではワイルドカードが効かない
* や ? を使った部分一致は、そのままでは効きません。
=XLOOKUP("A*",A2:A5,B2:B5,"-") → - 一致しない
=XLOOKUP("A*",A2:A5,B2:B5,"-",2) → りんご 5つめに 2 を指定する
XLOOKUP の既定は完全一致で、* はただの文字として扱われます。VLOOKUP は完全一致でもワイルドカードが効くので、そこだけ挙動が違います。
5つめ・6つめの引数
普段は使いませんが、必要なときのために。
| 引数 | 値 | 意味 |
|---|---|---|
| 5つめ(照合の種類) | 0 |
完全一致(既定) |
-1 |
完全一致、なければ次に小さい値 | |
1 |
完全一致、なければ次に大きい値 | |
2 |
ワイルドカードを使う | |
| 6つめ(検索方法) | 1 |
先頭から探す(既定) |
-1 |
末尾から探す |
-1 や 1 は、点数からランクを求めるような区切りの表を引くときに使います。
0 → ランク外 / 100 → C / 200 → B / 300 → A
=XLOOKUP(150,D1:D4,E1:E4,"-",-1) → C 150 以下で最大は 100
6つめの -1 は、同じキーが複数あるときに最後のものを取りたい場合に使います。履歴表から最新の1件を取り出す、といった場面です。
つまずきポイント3: 範囲の大きさをそろえる
検索範囲と戻り範囲は、同じ行数にしてください。
=XLOOKUP("A02",A2:A5,B2:B3,"-") → #VALUE!
ずれていると行の対応が取れないため、エラーになります。片方だけ行を足してしまう間違いが多いので、開始行と終了行を目で確かめてください。
使えるバージョンに注意
XLOOKUP は Microsoft 365 と Excel 2021 以降で使えます。Excel 2019 以前では #NAME? になります。
配布するファイルで使うときは、相手の環境を確認してください。社内で古いバージョンが混ざっている場合は、VLOOKUP のままにしておくほうが無難です。自分だけで使うファイルなら、XLOOKUP に寄せていくと保守が楽になります。
関連する関数
| 関数 | 用途 |
|---|---|
VLOOKUP |
従来の検索関数。古い環境でも動く |
INDEX / MATCH |
XLOOKUP と同じことを2つの関数で行う。古い環境での代替 |
IFERROR |
エラー全般を置き換える。XLOOKUP なら4つめの引数で足りる |
HLOOKUP |
横方向に検索する。XLOOKUP は縦横どちらも扱える |
次に進むには
新しく式を書くなら XLOOKUP を選んで構いません。列番号を数えないぶん、あとから表を触っても壊れにくいのが一番の利点です。
古い環境に配るファイルを扱うなら、VLOOKUP も引き続き読めるようにしておいてください。既存のファイルを引き継いだときに、式を読む場面が必ず出てきます。