使い勝手良し!新関数【XLOOKUP】解説

2021年のアップデートで使用できるようになった
関数【XLOOKUP】は、非常に使い勝手が良いので
ご紹介せずにはいられません(笑)

なお、この関数はMicrosoft 365、Excel2021以降であれば、
使用できますので、未だ試していない方は是非とも試用してみてください。
(Excel2019は残念ながら使用不可)
 

広告

XLOOKUPとは

VBA_XLOOKUP_11
基本、VLOOKUPと性能は変わりません。画像は例えば、単価表から単価を引抜き、売上明細を作成する場合の使用例です

 
指定した検索値をキーワードに表や範囲から
行ごとに情報を検索し、値・結果を返す関数です。
基本的にはVLOOKUPと同じ性質がある関数です。
 

関数の構成はどんなか?

VBA_XLOOKUP_1

  
関数の構成要素は↑の画像からも分かる通り6つです。

数式構成:
= XLOOKUP ( ①検索値 , ②検索範囲 , ③戻り範囲 , ④見つからない場合 , ⑤一致モード , ⑥検索モード )

No.必須・オプション入力 or 選択するもの
必須“検索対象” の “キーワード” or “セル” を選択
必須キーワードを検索する範囲を選択する
必須関数の結果、得られる値(がある範囲)を選択する
オプションキーワードが無かった場合に返す値、いわゆるIFERROR関数の部分。
※記述が無い場合は「#N/A」が返される
オプション「完全一致」か「近似値」の選択する。
※記述が無い場合は「完全一致」
オプション「昇順」か「降順」を選択する。
※記述がない場合は「昇順検索」先頭から検索開始する

まとめると以上になります。
オプション項目は、記入省略「可」です。

 

XLOOKUPの優れたところ

私、個人的には以下の事だと思います。

 ①検索範囲の一番右側にキーワードを持ってこなくても良い
 ②エラーが出た際に返す値も決められる
 ③昇順・降順どちらで検索を掛けるか、選択できる

特に、VLOOKUP関数の最大の欠点であったと思われる、
「検索範囲の一番右側にキーワードを持ってこなくてはならない」
が解消されている事は非常に助かります!

加えてVLOOKUP関数の場合は、
エラーが出た場合の処理は、別途【IFERROR関数】を
設定しなければならなかった
のが、XLOOKUP関数は
この関数1本で完結するので
これまた、ユーザーの事を考えてくれた良いUpdateだと思います。

③はあまり意識しませんでしたが、
VLOOKUP関数はその性質上、
検索範囲の1番上からキーワードを探していきます(昇順)。
これを検索範囲の「一番下」からも
キーワードを探す事も可能になったのです。
 

VBA_XLOOKUP_2
例題で言えば、単価表に『みかん』の単価が2つあったとしたら、
VBA_XLOOKUP_3
上から検索を掛けて値を返すか?(この例題の場合、「100」の値が返ってきます)
VBA_XLOOKUP_4
下から検索を進めて値を返すか?を設定できるという事です(この例題の場合、「200」の値が返ってきます)

 
「バイナリ検索」という聞き慣れない選択肢もあったので調べてみると、どうやら処理速度向上のための検索のようで、ここでは説明を省きます。
 

◆例題◆

VBA_XLOOKUP_11
ワークシート【単価表】に記載されている「単価」を、別シート【売上明細】にXLOOKUP関数を用いて転記する場合

それでは実際に例を用いて
このXLOOKUP関数を使用してみたいと思います。

『売上明細』のSheetのD列に各商品の単価を記入する場合、
このXLOOKUP関数を使用して、
別Sheetの『単価表』B列から抜き出してみましょう。

この場合の数式は以下の通りです。

=XLOOKUP( 商品名, “単価表”のA列, “単価表”のB列, [以降はオプション] )

VBA_XLOOKUP_5
まずは ”検索値(キーワード)” を選択します。セル【D3】には『みかん』の単価が欲しいので、セル【C3】を検索値として設定します
VBA_XLOOKUP_6
次は “検索範囲” を決めます。単価表におけるのキーワードが記載されている箇所を列ごと選択すると良いです。
VBA_XLOOKUP_7
“戻り範囲” 、つまり関数の結果が得られる値を決めます。検索範囲を列ごと選択したならば、こちらも列ごと選択してください。
VBA_XLOOKUP_8
以降はオプションなので、記載なしでも問題ないです。ここでの例題では、
エラーの場合は「無」を戻り値とし
「絶対参照」で、
検索の順序を「昇順」とします

 

基本的に範囲は「列ごと指定」してしまった方が良いでしょう。
その方が楽ですし、間違いありません。
無事に意図した単価が引っ張れてきたかと思います。
 

もしもエラーが出た場合は?

VBA_XLOOKUP_9

数式に誤りがない場合は、
以下の2つをまずは疑ってみてください。

1.検索値(キーワード)に細かな “ズレ” が生じていないか?
 →[ひらがな or カタカナ] [半角 or 全角] [スペースの有 or 無] 等
2.そもそも参照元(単価表)にキーワードがないのではないか?
 →新しく追加された項目(例題では商品)があれば、参照元の表に要追加

 

VBA_XLOOKUP_10
参照元の【単価表】を修正・追記すれば(左図)、結果が反映されてエラーが改善される事はよくあります(右図)。

 
 
 
何と言ってもVLOOKUP最大の欠点の

「検索範囲のキーワードを必ず一番右端の列に持って来る」

を全く考慮せずにOKだという事で劇的に使い勝手がよくなりました。
みなさんにも是非、試してもらいたいです。

以上何かの参考になれば幸いです。

広告