ホーム / 関数 / XLOOKUP
検索/行列 Excel + Google スプレッドシート

Excel XLOOKUP 関数の使い方

XLOOKUP(エックスルックアップ)は、検索範囲から値を探し、別の範囲の同じ位置にある値を返す Excel(エクセル)の検索関数です。列番号を数える必要がなく、左方向にも検索でき、VLOOKUP のように列の挿入で壊れることもありません。Excel 2021、Microsoft 365、Google スプレッドシートで使えます。構文、基本の例題、VLOOKUP との違い、複数条件での検索を、練習問題で身につけましょう。

XLOOKUP 関数の構文と引数

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])

XLOOKUP は、検索範囲から値を探し、同じ位置にある戻り範囲の値を返します。完全一致で探すだけなら、最初の3つの引数で足ります。検索範囲と戻り範囲は、行数(横方向の検索なら列数)をそろえてください。

1 検索値(lookup_value)
必須

探したい値です。文字列、数値、セル参照(E2 など)、ほかの数式の結果を指定できます。

2 検索範囲(lookup_array)
必須

検索値を探す1列(または1行)の範囲です(例:A2:A6)。VLOOKUP と違い、検索値が表の左端にある必要はありません。

3 戻り範囲(return_array)
必須

見つかった位置から値を返す範囲です(例:C2:C6)。検索範囲と同じ大きさにします。列番号を数える必要はありません。

4 見つからない場合(if_not_found)
省略可

一致する値がないときに返す値です(例:"未登録" や 0)。省略すると、見つからないときは #N/A エラーになります。

5 一致モード(match_mode)
省略可

完全一致・近似一致・ワイルドカードを切り替えます。

  • 0 — 完全一致(既定。いちばんよく使います)
  • -1 — 完全一致。なければ次に小さい値(段階的な料率表など)
  • 1 — 完全一致。なければ次に大きい値
  • 2 — ワイルドカード一致(*、?、~ が使えます)
6 検索モード(search_mode)
省略可

検索する向きや、二分探索を指定します。

  • 1 — 先頭から末尾へ検索(既定)
  • -1 — 末尾から先頭へ検索(最新の記録を探すときに便利)
  • 2 — 昇順の二分探索(昇順に並べ替えた範囲が必要)
  • -2 — 降順の二分探索(降順に並べ替えた範囲が必要)

XLOOKUP の基本例題:社員番号から給与を検索

A 列が社員番号、B 列が氏名、C 列が給与です。E2 に検索したい社員番号 E-102 が入っています。この XLOOKUP の基本例題では、完全一致で給与を引いてきます。

社員番号氏名給与
E-101佐藤72000
E-102鈴木64000
E-103高橋81000
E-104田中59000
E-105伊藤77000
=XLOOKUP(E2, A2:A6, C2:C6, "未登録")

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

=INDEX(C2:C6, MATCH(E2, A2:A6, 0))

MATCH が検索値の位置を探し、INDEX がその位置の値を返します。最後の 0 は完全一致の指定です。VLOOKUP の使い方と比べたいときは、次のページも参考にしてください。

XLOOKUP で見つからないとき(#N/A)の対処

一致する値がないと、XLOOKUP は #N/A を返します。新しい Excel や Google スプレッドシートなら、4つ目の引数(見つからない場合)で表示を置き換えられます。

見つからないときは「未登録」と表示する

=XLOOKUP(E2, A2:A6, C2:C6, "未登録")

XLOOKUP がない古い環境では、検索を IFERROR や IFNA で包む方法もあります。#N/A だけを置き換えたいときは IFNA、すべてのエラーをまとめて隠すときは IFERROR を使います。

Excel で XLOOKUP を使う手順

  1. 検索値と検索範囲を決める — 何を探すか(検索値。たとえば E2 の社員番号)と、その値が入っている列または行(検索範囲。たとえば A2:A6)を決めます。
  2. 結果を返す範囲を指定する — 答えが入っている範囲(たとえば給与の C2:C6)を戻り範囲にします。行数は検索範囲とぴったり同じにしてください。
  3. 数式を入力して、見つからない場合に備える — =XLOOKUP(E2, A2:A6, C2:C6) と入力して Enter を押します。4つ目の引数に "未登録" を付けると、見つからないときに #N/A ではなく分かりやすい文字を表示できます。

XLOOKUP で複数条件を指定する方法

基本の XLOOKUP が一度に比べる値は1つです。2つ以上の条件(たとえば「部署」と「社員番号」)で検索したいときは、条件式を掛け合わせるか、条件を1つのキーにつなげます。

方法1:条件式を掛け合わせる(おすすめ)

=XLOOKUP(1, (A2:A6=E2) * (B2:B6=F2), C2:C6, "未登録")

それぞれの条件式は TRUE/FALSE を返します。掛け合わせると、すべての条件を満たす行だけが 1 になり、XLOOKUP がその行を見つけます。

方法2:& で文字列をつなげる

=XLOOKUP(E2&"|"&F2, A2:A6&"|"&B2:B6, C2:C6, "未登録")

検索値と検索範囲の両方を & でつないで、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 を練習しよう:社員番号から給与を検索

下のロックされたシートに数式を入力すると、すぐに合否を確認できます。別ページの全画面表示で練習することもできます。

練習問題のページを開く →
問題文
ヒント 0/4
模範解答 3
–
テストケース
1
2
3
リセット
提出
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
インタラクティブなスプレッドシートを読み込み中...
セルと数式の計算エンジンを準備しています
○ 準備完了 ハイライトされたセルに数式を入力し、「提出」を押してください。

ほかの 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 で書き換えてください。