Excel XLOOKUP 関数の使い方
XLOOKUP(エックスルックアップ)は、検索範囲から値を探し、別の範囲の同じ位置にある値を返す Excel(エクセル)の検索関数です。列番号を数える必要がなく、左方向にも検索でき、VLOOKUP のように列の挿入で壊れることもありません。Excel 2021、Microsoft 365、Google スプレッドシートで使えます。構文、基本の例題、VLOOKUP との違い、複数条件での検索を、練習問題で身につけましょう。
XLOOKUP 関数の構文と引数
XLOOKUP は、検索範囲から値を探し、同じ位置にある戻り範囲の値を返します。完全一致で探すだけなら、最初の3つの引数で足ります。検索範囲と戻り範囲は、行数(横方向の検索なら列数)をそろえてください。
探したい値です。文字列、数値、セル参照(E2 など)、ほかの数式の結果を指定できます。
検索値を探す1列(または1行)の範囲です(例:A2:A6)。VLOOKUP と違い、検索値が表の左端にある必要はありません。
見つかった位置から値を返す範囲です(例:C2:C6)。検索範囲と同じ大きさにします。列番号を数える必要はありません。
一致する値がないときに返す値です(例:"未登録" や 0)。省略すると、見つからないときは #N/A エラーになります。
完全一致・近似一致・ワイルドカードを切り替えます。
検索する向きや、二分探索を指定します。
XLOOKUP の基本例題:社員番号から給与を検索
A 列が社員番号、B 列が氏名、C 列が給与です。E2 に検索したい社員番号 E-102 が入っています。この XLOOKUP の基本例題では、完全一致で給与を引いてきます。
| 社員番号 | 氏名 | 給与 |
|---|---|---|
| E-101 | 佐藤 | 72000 |
| E-102 | 鈴木 | 64000 |
| E-103 | 高橋 | 81000 |
| E-104 | 田中 | 59000 |
| E-105 | 伊藤 | 77000 |
XLOOKUP は A2:A6 から E-102 を探し、同じ行の C2:C6 の値 64000 を返します。社員番号が見つからないときは、#N/A ではなく「未登録」と表示されます。4つ目の引数を省略した場合は、見つからないと #N/A エラーになります。
XLOOKUP が使えない・#NAME? エラーになるとき
XLOOKUP は、Excel 2021、Microsoft 365、Excel for the web、Google スプレッドシートで使えます。Excel 2019 以前には入っていないため、数式を入力しても #NAME? エラーになります。
- お使いの Excel が 2019 以前の場合は、VLOOKUP か、INDEX と MATCH の組み合わせを使います。
- ファイルを Excel 2019 以前の人に渡す場合も、XLOOKUP の数式は計算されません。渡す相手のバージョンを確認してください。
- バージョンは合っているのに #NAME? になる場合は、関数名のつづりを確認します。
XLOOKUP を使わずに、同じ結果を返す INDEX+MATCH
MATCH が検索値の位置を探し、INDEX がその位置の値を返します。最後の 0 は完全一致の指定です。VLOOKUP の使い方と比べたいときは、次のページも参考にしてください。
XLOOKUP で見つからないとき(#N/A)の対処
一致する値がないと、XLOOKUP は #N/A を返します。新しい Excel や Google スプレッドシートなら、4つ目の引数(見つからない場合)で表示を置き換えられます。
見つからないときは「未登録」と表示する
XLOOKUP がない古い環境では、検索を IFERROR や IFNA で包む方法もあります。#N/A だけを置き換えたいときは IFNA、すべてのエラーをまとめて隠すときは IFERROR を使います。
Excel で XLOOKUP を使う手順
- 検索値と検索範囲を決める — 何を探すか(検索値。たとえば E2 の社員番号)と、その値が入っている列または行(検索範囲。たとえば A2:A6)を決めます。
- 結果を返す範囲を指定する — 答えが入っている範囲(たとえば給与の C2:C6)を戻り範囲にします。行数は検索範囲とぴったり同じにしてください。
- 数式を入力して、見つからない場合に備える — =XLOOKUP(E2, A2:A6, C2:C6) と入力して Enter を押します。4つ目の引数に "未登録" を付けると、見つからないときに #N/A ではなく分かりやすい文字を表示できます。
XLOOKUP で複数条件を指定する方法
基本の XLOOKUP が一度に比べる値は1つです。2つ以上の条件(たとえば「部署」と「社員番号」)で検索したいときは、条件式を掛け合わせるか、条件を1つのキーにつなげます。
方法1:条件式を掛け合わせる(おすすめ)
それぞれの条件式は TRUE/FALSE を返します。掛け合わせると、すべての条件を満たす行だけが 1 になり、XLOOKUP がその行を見つけます。
方法2:& で文字列をつなげる
検索値と検索範囲の両方を & でつないで、1つのキーにします。同じ考え方で、行と列を同時に指定する検索もできます。
VLOOKUP との違い:XLOOKUP と VLOOKUP の比較
XLOOKUP
左にも右にも検索できます。列番号を数える必要がなく、既定で完全一致になります。見つからないときの値を、数式の中で指定できます。
VLOOKUP
検索できるのは右方向だけです。列を挿入・削除すると列番号がずれて壊れます。4つ目の引数を省略すると近似一致になるので、FALSE(または 0)の付け忘れに注意が必要です。
XLOOKUP と INDEX+MATCH の違い
XLOOKUP
1つの関数で済みます。「見つからない場合」の引数があるので IFERROR で包む必要がなく、左・右・末尾からの検索も同じ書き方です。
INDEX MATCH
XLOOKUP が使えない 2019 以前の Excel を含め、どのバージョンでも動きます。INDEX の中に行と列の MATCH を2つ入れると、行と列を同時に指定する検索もできます。
XLOOKUP でよくあるエラーと注意点
- #N/A — 一致する値がありません。前後の余分なスペースや、数字と文字列の違いを確認してください。
- #VALUE! — 検索範囲と戻り範囲の大きさ(行数・列数)が合っていません。
- 下にコピーすると結果がずれる — コピーする前に、範囲を $A$2:$A$6 のように $ で固定してください。
ほかの XLOOKUP 練習問題
VLOOKUP との使い分けや、見つからないときの処理を、実務に近い場面で練習できます。
よくある質問
XLOOKUP とは何ですか?
XLOOKUP(エックスルックアップ)は、検索範囲(lookup_array)から検索値を探し、戻り範囲(return_array)の同じ位置にある値を返す関数です。Excel 2021、Microsoft 365、Google スプレッドシートで使え、VLOOKUP と HLOOKUP の代わりになります。
XLOOKUP の使い方を教えてください。
=XLOOKUP(E2, A2:A6, C2:C6) のように、検索値(E2)、検索範囲(A2:A6)、戻り範囲(C2:C6)の順に指定します。完全一致で探すだけなら、この3つの引数で足ります。見つからないときの表示は、4つ目の引数で指定できます。
XLOOKUP と VLOOKUP の違いは何ですか?
XLOOKUP は左にも右にも検索でき、列番号が不要で、既定で完全一致になり、見つからないときの値を引数で指定できます。VLOOKUP は右方向にしか検索できず、列を挿入すると列番号がずれて壊れます。
VLOOKUP より XLOOKUP を使うべきですか?
Excel 2021 以降、Microsoft 365、Google スプレッドシートなら、XLOOKUP がおすすめです。ただし、Excel 2019 以前で開くファイルや、VLOOKUP を前提とした試験・面接の対策には、VLOOKUP が今でも欠かせません。
XLOOKUP と INDEX+MATCH はどちらがよいですか?
XLOOKUP のほうが簡単で、1つの関数で「見つからない場合」の値まで指定できます。XLOOKUP が使えない Excel 2019 以前や、INDEX の中に行と列の MATCH を入れる検索には、INDEX+MATCH が向いています。
XLOOKUP は Google スプレッドシートでも使えますか?
使えます。書式は Excel と同じで、見つからない場合(if_not_found)、一致モード(match_mode)、検索モード(search_mode)も指定できます。
XLOOKUP で複数条件を指定するにはどうしますか?
条件式を掛け合わせて =XLOOKUP(1, (A2:A6=E2)*(B2:B6=F2), C2:C6) と書きます。または、条件を & でつないで =XLOOKUP(E2&F2, A2:A6&B2:B6, C2:C6) と書く方法もあります。
XLOOKUP で #N/A エラーが出るのはなぜですか?
多くは、一致する値がないことが原因です。前後の余分なスペース、数字と文字列の違い、全角と半角の違いを確認してください。検索範囲と戻り範囲の大きさが違うと #VALUE! になります。見つからない場合の4つ目の引数で、表示を置き換えることもできます。
XLOOKUP を使うと #NAME? エラーになるのはなぜですか?
Excel 2019 以前には XLOOKUP が入っていないためです。Excel 2021 以降か Microsoft 365 に更新するか、VLOOKUP または INDEX+MATCH で書き換えてください。