XLOOKUP関数の使い方|VLOOKUPより簡単な検索関数

執筆者:

カテゴリ:

XLOOKUPは、表から値を探して、対応する値を返す関数です。やることはVLOOKUPと同じですが、VLOOKUPの弱点をひと通り解消した後継関数として作られています。

新しく数式を書くなら、こちらを使うほうが素直です。

書式

=XLOOKUP(検索キー, 検索範囲, 結果範囲, [見つからない場合], [一致モード], [検索モード])
引数 内容
検索キー 探したい値
検索範囲 探しに行く1列(または1行)だけの範囲
結果範囲 返したい値が入っている範囲
見つからない場合 ヒットしなかったときに返す値。省略すると #N/A
一致モード 省略時は完全一致。省略でいい
検索モード 省略時は上から検索

VLOOKUPと違って、検索する列と返す列を別々に指定します。ここが最大の違いです。

基本の使い方

A B C
1 商品コード 商品名 価格
2 A-101 ボールペン 150
3 A-102 ノート 320
4 B-201 ハサミ 480

「B-201」の商品名を取り出します。

=XLOOKUP("B-201", A2:A4, B2:B4)

結果:ハサミ

A列から探して、B列を返す。読んだままの意味になります。列番号を数える必要がありません。

VLOOKUPより優れている点

1. 左方向にも検索できる

VLOOKUPは範囲の左端列しか検索できません。「商品名から商品コードを引く」ことができませんでした。

XLOOKUPは検索範囲と結果範囲が独立しているので、位置関係を気にしません。

=XLOOKUP("ハサミ", B2:B4, A2:A4)   → B-201

2. 列を挿入しても壊れない

VLOOKUPは「左から3番目」という位置で指定するため、表の途中に列を挿入すると数式が別の列を指してしまいます。

XLOOKUPは範囲そのものを指定するので、列を挿入しても範囲が自動で追従します。運用中に壊れないのが実務では大きいです。

3. 見つからないときの表示を指定できる

VLOOKUPでは IFERROR で包む必要がありました。

=IFERROR(VLOOKUP(E2, A:C, 2, FALSE), "該当なし")

XLOOKUPは4つ目の引数で直接指定できます。

=XLOOKUP(E2, A:A, B:B, "該当なし")

IFERROR は数式全体のエラーを握りつぶすので、範囲指定のミスまで隠してしまいます。XLOOKUPの4つ目の引数は「見つからなかった場合」だけを扱うため、他のエラーはちゃんとエラーとして表面化します。この違いは地味ですが重要です。

4. 複数の列をまとめて返せる

結果範囲を複数列にすると、その列数ぶんが一度に返ります。

=XLOOKUP("B-201", A2:A4, B2:C4)   → ハサミ | 480

商品名と価格が横並びで一度に出ます。VLOOKUPだと数式を2つ書く必要がありました。

下から検索する

同じ検索キーが複数ある場合、通常は最初に見つかったものが返ります。「最新の1件が欲しい」ときは6つ目の引数に -1 を指定します。

=XLOOKUP(E2, A:A, B:B, "", 0, -1)

日付順に追記していく履歴表から最新の状態を取り出す、という使い方ができます。

注意点

古いExcelでは使えません。 スプレッドシートでは問題なく使えますが、Excelで開く可能性のあるファイルでは注意が必要です。Microsoft 365 と Excel 2021 以降でのみ対応しています。取引先とファイルをやり取りする場合は、VLOOKUP のままにしておくほうが無難な場面もあります。

検索範囲と結果範囲の行数は揃える必要があります。 A2:A100B2:B50 のようにずれていると #VALUE! になります。

まとめ

  • – 書式は =XLOOKUP(検索キー, 検索範囲, 結果範囲, 見つからない場合)
  • – 列番号を数えなくていい
  • 左方向にも検索できる
  • – 列の挿入で壊れない
  • – 見つからないときの値を直接指定できる

新規に作るならXLOOKUP。既存ファイルの保守や、古いExcelとの互換が要るならVLOOKUP。詳しい使い分けは VLOOKUPとXLOOKUPの違い にまとめました。

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です