業務効率化

XLOOKUP関数でVLOOKUPの弱点を解決する|左方向検索・該当なし・列ズレ対応

ExcelMate編集部7分

この記事の要点

  • XLOOKUPは列番号がいらず、列を挿入しても壊れない。VLOOKUPの代表的な事故をそのまま回避できる
  • 数式は =XLOOKUP(検索値, 検索範囲, 戻り範囲, 見つからないときの値)。第4引数で#N/Aを「該当なし」などに置き換えられる
  • VLOOKUPと違い検索値より左の列も取り出せる。XLOOKUPはExcel 2021・Microsoft 365で使える

商品コードから商品名や単価を引っぱってくる転記には、長く VLOOKUP が使われてきました。便利な一方で、「列番号を数え間違える」「列を1つ挿入したら全部ズレた」「検索値より左の列は取り出せない」「見つからないと #N/A が表になって残る」といったつまずきが定番です。

これらをまとめて解決するのが XLOOKUP 関数です。VLOOKUPの基本(VLOOKUP関数で商品コードから単価・商品名を自動転記する)を押さえたうえで、何が楽になるのかを実際の画面で見ていきましょう。

完成イメージ

検索コードを入れると、商品名と単価が商品マスタから転記されます。マスタに無いコード(X-999)を入れても、#N/A ではなく「該当なし」と表示され、表が崩れません。これがXLOOKUPの第4引数の効果です。

XLOOKUP関数で商品コードから商品名・単価を転記したExcel画面。B2セルでマスタのコード列を検索し商品名列を返す数式(見つからないときは「該当なし」)を入力し、マスタに無いX-999の行には「該当なし」が表示されている
B2 に入力した数式と、その結果(見つからない X-999 は「該当なし」に)

数式の意味

B2 セル(商品名)に入れているのは、次の数式です。

=XLOOKUP(A2, マスタ!$A:$A, マスタ!$B:$B, "該当なし")

XLOOKUP は「検索範囲から値を探し、対応する戻り範囲の値を返す」関数です。引数は次のとおりで、列番号がありません

  1. 検索値(A2)… 探したい値。ここでは「検索コード」
  2. 検索範囲(マスタ!$A:$A)… 探しにいく列。マスタのコード列
  3. 戻り範囲(マスタ!$B:$B)… 取り出したい列。マスタの商品名列
  4. 見つからないときの値("該当なし")… 省略すると #N/A。指定すれば表が崩れません

単価(C列)は、戻り範囲を単価の列(例:マスタ!$C:$C)に変えるだけです。VLOOKUPのように「左から何列目か」を数える必要はありません。

VLOOKUPの弱点と、XLOOKUPでの解決

  • 列番号の数え間違い … VLOOKUPは 3 のような列番号を指定しますが、XLOOKUPは取り出す列を直接選ぶため、数え間違いが起きません。
  • 列を挿入したら壊れる … VLOOKUPは列番号で位置を覚えているので、間に列を1つ足すとズレます。XLOOKUPは列そのものを参照するので挿入しても壊れません
  • 左方向が探せない … VLOOKUPは検索値より右しか取り出せません。XLOOKUPは検索範囲と戻り範囲を別々に選ぶので、検索値より左の列も取り出せます(例:商品名からコードを逆引き)。
  • #N/A が表に残る … VLOOKUPでは IFERROR で囲む必要がありました。XLOOKUPは第4引数で「見つからないときの値」を直接指定できます。

使うときの注意:バージョン

XLOOKUP は Excel 2021 と Microsoft 365 で使えます。Excel 2019 以前では使えないため、古いバージョンの相手とファイルを共有する場合は VLOOKUP や INDEX+MATCH を使ってください。社内とお客様で使えるバージョンが違うこともあるので、共有相手の環境も確認しておくと安全です。

まとめ

新しく転記のしくみを作るなら、列番号がいらず壊れにくい XLOOKUP がおすすめです。VLOOKUPの基本を知ったうえでXLOOKUPに切り替えると、「列を足したら壊れた」「#N/Aだらけになった」といった定番のトラブルをまとめて避けられます。VLOOKUP側の基本は VLOOKUP関数で商品コードから単価・商品名を自動転記する で解説しています。

「古いバージョンが混在していて、どの関数で組むべきか迷う」「複数のマスタをまたいだ転記を安定して回したい」という場合は、ExcelMate のチャット相談でそのまま聞いていただけます。

よくある質問

XLOOKUPとVLOOKUPの一番の違いは?
XLOOKUPは「列番号」を指定せず、検索する範囲と取り出す範囲を直接選びます。そのため列を挿入・削除しても壊れず、検索値より左の列も取り出せます。見つからないときの値も引数で指定でき、#N/Aを自分で処理しなくて済みます。
XLOOKUP関数の書き方は?
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからないときの値]) です。検索値=探したい値、検索範囲=探す列、戻り範囲=取り出したい列、4つ目=見つからないときに返す値(省略すると#N/A)です。
XLOOKUPはどのバージョンで使えますか?
Excel 2021 と Microsoft 365 で使えます。Excel 2019 以前では使えないため、その場合はVLOOKUPやINDEX+MATCHを使います。ファイルを共有する相手のバージョンにも注意してください。
VLOOKUPはもう使わなくていい?
新しく作るなら、壊れにくいXLOOKUPがおすすめです。ただし古いバージョンと共有するファイルや、既存のVLOOKUPが問題なく動いている表は、無理に置き換える必要はありません。

監修・運営者

株式会社KOPS 代表取締役 馬込 浩

馬込 浩株式会社KOPS 代表取締役

業務システムの要件定義〜設計〜実装を一気通貫で手がけ、経営者として自社のバックオフィスも運営。Excel・VBA・Power Query/スプレッドシート自動化の実務経験にもとづき、ExcelMateの記事を監修しています。

運営者情報・監修者プロフィールを見る