商品コードから商品名や単価を引っぱってくる転記には、長く VLOOKUP が使われてきました。便利な一方で、「列番号を数え間違える」「列を1つ挿入したら全部ズレた」「検索値より左の列は取り出せない」「見つからないと #N/A が表になって残る」といったつまずきが定番です。
これらをまとめて解決するのが XLOOKUP 関数です。VLOOKUPの基本(VLOOKUP関数で商品コードから単価・商品名を自動転記する)を押さえたうえで、何が楽になるのかを実際の画面で見ていきましょう。
完成イメージ
検索コードを入れると、商品名と単価が商品マスタから転記されます。マスタに無いコード(X-999)を入れても、#N/A ではなく「該当なし」と表示され、表が崩れません。これがXLOOKUPの第4引数の効果です。
数式の意味
B2 セル(商品名)に入れているのは、次の数式です。
=XLOOKUP(A2, マスタ!$A:$A, マスタ!$B:$B, "該当なし")
XLOOKUP は「検索範囲から値を探し、対応する戻り範囲の値を返す」関数です。引数は次のとおりで、列番号がありません。
- 検索値(A2)… 探したい値。ここでは「検索コード」
- 検索範囲(マスタ!$A:$A)… 探しにいく列。マスタのコード列
- 戻り範囲(マスタ!$B:$B)… 取り出したい列。マスタの商品名列
- 見つからないときの値("該当なし")… 省略すると
#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 のチャット相談でそのまま聞いていただけます。

