いまさら聞けないExcelの使い方講座

【Excel】VLOOKUPからXLOOKUP関数へ乗り換え! 既存の表をスマートに書き換える方法

XLOOKUP関数の使えないバージョンのサポート終了間近。そろそろ、XLOOKUP関数に慣れておこう!

1,2,3……と、列番号を数える必要なし!

 エクセルでは、商品情報や顧客名簿などのマスターデータから、特定の“キー”に基づいて値を取り出す場面が多いですよね。そのような場合に使われる代表的な関数が「VLOOKUP」です。ベテラン勢にとっては当たり前の関数かもしれませんが、新人の頃は覚えるのに苦労したのではないでしょうか。

VLOOKUP関数なら、管理番号から商品名を取り出すといった処理が可能です。この例では[商品マスタ]シートを参照する構造です
ただし、該当するデータがない場合は「#N/A」エラーが表示されます

 「#N/A」エラーを回避するには、以下のようにIFERROR関数を組み合わせる方法が定番です。しかし、このような長い数式に抵抗がある人は多いでしょう。

=IFERROR(VLOOKUP(B32,商品マスタ!$A$2:$E$9,2,FALSE),"該当なし")

 また、引数[列番号]も曲者です。確か○列目だった気がする、と指定したら「#REF!」エラーが表示されることもあります。

 苦労は多いものの、VLOOKUP関数は便利だから……、と使い続けている人もいますよね。そろそろ上位互換の“XLOOKUP関数”への乗り換えを考えてみてはいかがでしょうか。これまで、XLOOKUP関数が利用できなかったExcel 2016/2019のサポート終了も間近(2025年10月予定)です。XLOOKUP関数の使えるバージョンに切り替える職場も増えるでしょう。

 今回は、VLOOKUP関数の数式をXLOOKUP関数に書き換える例を紹介します。この先、エクセルで“表引き”するなら、XLOOKUP関数のほうが圧倒的に便利で簡単ですよ。

必須の引数は3つだけ

 XLOOKUP関数とVLOOKUP関数の構文を見比べてみましょう。XLOOKUP関数の引数のうち、最初の[検索値][検索範囲][戻り範囲]の3つが必須です。引数名からして簡単に見えませんか?

XLOOKUP関数とVLOOKUP関数の構文。[検索値](①)は共通です。XLOOKUP関数の[検索範囲](②)は[検索値]を含むセル範囲を指定します。[戻り範囲](③)は取り出したい値を含むセル範囲を直接指定します。
VLOOKUP関数では[範囲](④)に表全体を指定し、取り出したい値を含む列を[列番号](⑤)として、数値で指定していましたね

 XLOOKUP関数の[検索範囲]は[検索値]を含むセル範囲を指定します。[戻り範囲]も取り出したい値を含むセル範囲を直接指定できます。もう、列番号を間違えることもありません。さらに[検索値]より左側にある値も取り出せます。VLOOKUP関数の弱点も解消されています。

「V」を「X」に変更、[検索範囲]は生かそう

 ここでは、入力済みのVLOOKUP関数の数式をXLOOKUP関数に書き換えてみます。[検索値]は共通なので、そのまま。VLOOKUP関数は[範囲]に表全体を指定していたので、XLOOKUP関数の[検索範囲]として、列単位に書き換えます(ここでは「E」→「A」)。

 残りの引数は削除して、[戻り範囲]に該当するセル範囲をドラッグして選択し、[F4]キーで絶対参照に切り替えます。

[F2]キーを押して(⑥)セルを編集状態にします。「V」を「X」に書き換えます(⑦)
[検索範囲]のセル範囲の列番号だけを書き換えます。ここでは「E」を「A」とします(⑧)
残りの引数は不要なので選択して削除します(⑨)。2つ目の引数の後ろにある「,」は残しておきます
参照先の[商品マスタ]シート(⑩)に切り替えます
[戻り範囲]として指定するセル範囲をドラッグすると(⑪)、セル範囲が入力されます。そのまま[F4]キーを押します(⑫)
絶対参照に切り替わったことを確認したら、[Enter]キーを押します(⑬)
VLOOKUP関数をXLOOKUP関数に書き換えられました

 面倒に感じるなら、数式を削除して最初から入力しても構いませんが、意外と簡単に書き換えられると思いませんか?

 「該当なし」のメッセージを表示させるのも簡単です。書き換えた数式の最後に引数[見つからない場合]を追加するだけ。以下のように指定します。

=XLOOKUP(B32,商品マスタ!$A$2:$A$9,商品マスタ!$B$2:$B$9,"該当なし")

 XLOOKUP関数の基本的な使い方については、こちらの記事を参考にしてください。