【もう迷わない!】XLOOKUP関数を徹底解説!VLOOKUPとの違いから使い分けまで

Excel

日々の仕事で「VLOOKUP関数」にお世話になっている方も多いのではないでしょうか?

データを検索して特定の情報を取り出すのに便利なVLOOKUP関数ですが、最近ではもっと便利で使いやす

XLOOKUP関数

という新しい関数が登場しているのをご存じですか?

すもりーマン
すもりーマン

XLOOKUPってVLOOKUPと何が違うの?

すもりーマン
すもりーマン

どうやって使えばいいか分からない。。

すもりーマン
すもりーマン

結局どっちを使えばいいの?

でんちゃん
でんちゃん

何が違うか実際に事例を使わないとわかりにくいよね。。
今回はすもりーマンの疑問を解消し、役立つ情報を伝えていくね!

XLOOKUP関数の基本的な使い方

VLOOKUP関数との具体的な違い

それぞれの関数をどんな場面で使い分ければ良いのか

でんちゃん
でんちゃん

この記事を読み終える頃には、XLOOKUP関数を使いこなして、日々の業務をもっと効率的に進められるようになっているはず!
ぜひ最後まで読んで、XLOOKUP関数を仕事に活かしてみて

すもりーマン
すもりーマン

分かった!今日もよろしく頼むね!


XLOOKUP関数とは?

まずはじめに、XLOOKUP関数がどのような関数なのかを理解しましょう。

XLOOKUP関数は、

Excel 365から導入された新しい検索関数で、従来のVLOOKUP関数やHLOOKUP関数、INDEX関数とMATCH関数を組み合わせたような機能を、よりシンプルに、そして強力に提供してくれます。

簡単に言うと、

指定した値を範囲の中から探し出し、その値に対応する別の列や行のデータを取り出すことができる関数です。

VLOOKUP関数と似ていますが、VLOOKUP関数でできていたことはもちろん、それ以上のことができるようになった、まさに検索関数の進化形なんです!


XLOOKUP関数の基本的な使い方

XLOOKUP関数は、いくつかの引数(ひきすう)を使って機能します。

まずは、基本的な引数と構文を見ていきましょう。

構文

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])

各引数の説明

  • 検索値 (lookup_value):検索したい値のことです。例えば、商品コードや社員番号など、探し出したいキーワードを指定します。
  • 検索範囲 (lookup_array):検索値を探す範囲のことです。検索値が含まれている列や行全体を指定します。
  • 戻り範囲 (return_array):検索値が見つかったときに、その値に対応して返してほしいデータが含まれている範囲のことです。例えば、商品名や氏名など、取得したいデータがある列や行を指定します。
  • [見つからない場合] (if_not_found):これは省略可能な引数です。もし検索値が見つからなかった場合に、エラー(#N/A)ではなく表示させたいメッセージや値を指定できます。ここを省略すると、検索値が見つからなかった場合は#N/Aエラーが表示されます。
  • [一致モード] (match_mode):これも省略可能な引数です。検索値とどのように一致させるかを指定します。
    • 0 (既定値):完全一致。検索値と完全に一致するものを探します。
    • -1:完全一致、または次に小さい項目。検索値と一致するものがなければ、次に小さい項目を返します。
    • 1:完全一致、または次に大きい項目。検索値と一致するものがなければ、次に大きい項目を返します。
    • 2:ワイルドカード文字の一致。アスタリスク(*)や疑問符(?)を使って、あいまいな検索ができます。
  • [検索モード] (search_mode):これも省略可能な引数です。どこから検索を開始するか、どのような順序で検索するかを指定します。
    • 1 (既定値):先頭から末尾へ検索します。
    • -1:末尾から先頭へ検索します。
    • 2:昇順ソート済みデータでバイナリ検索を実行します。
    • -2:降順ソート済みデータでバイナリ検索を実行します。

具体例を見てみよう!

では、実際のデータを使ってXLOOKUP関数の使い方を見てみましょう。 今回は、以下の「商品リスト」のデータを使って、商品コードから商品名や単価を検索してみます。


商品リスト


例えば、商品コード「A003」の商品名を取得したい場合、以下のように入力します。

例1:商品コードから商品名を取得する

検索したい商品コード結果(商品名)
A003スマートフォン

入力するXLOOKUP関数: =XLOOKUP(F3,A2:A7,B2:B7)

この数式は、F3にある文字列(A003)という値を「商品コード」の列(A2:A7)の中から探し、それが見つかった行の「商品名」の列(B2:B7)の値を返してね、という意味です。

結果として、「スマートフォン」が返されます。

スマートフォンが結果として出力されます

XLOOKUP関数とVLOOKUP関数の徹底比較!どっちが良いの?

さて、ここからが本題です。

XLOOKUP関数とVLOOKUP関数、一体何が違うのでしょうか?

そして、結局どちらを使えばいいのでしょうか?

それぞれの特徴を比較しながら見ていきましょう。


VLOOKUP関数のおさらい

VLOOKUP関数は、指定した列の左端を検索し、その行の指定した列のデータを取得する関数です。

構文: =VLOOKUP(検索値, 範囲, 列番号, [検索方法])

  • 検索値 (lookup_value):検索したい値。
  • 範囲 (table_array):検索対象となる表全体。
  • 列番号 (col_index_num):範囲の左端から数えて、何列目のデータを取得したいかを指定。
  • [検索方法] (range_lookup):**TRUE(近似一致)FALSE(完全一致)**を指定。ほとんどの場合、**FALSE(完全一致)**を使います。

VLOOKUP関数のより詳しい使い方は、こちらの記事で解説していますので、気になる方はぜひチェックしてみてくださいね!


VLOOKUP関数のメリット・デメリット

VLOOKUP関数は長年使われてきた関数なので、多くの人に認知されていて、情報も豊富にあるのがメリットです。しかし、いくつかデメリットもあります。

VLOOKUP関数のメリット

広く普及している:Excelを使っている人ならほとんどの人が知っているため、共有しやすい。

VLOOKUP関数のデメリット

検索方向が左から右のみ:検索値を指定する列は、必ず取得したいデータの列よりも左側に位置している必要があります。これ、結構不便に感じることもありますよね。

列の挿入・削除に弱い:表の途中に列を挿入したり、削除したりすると、VLOOKUP関数の列番号がズレてしまい、数式を修正する必要が出てきます。

近似一致の挙動が分かりにくい:[検索方法]をTRUEにした場合の挙動が直感的ではないことがあります。

複数条件の検索ができない:複数条件での検索には工夫が必要です。

デフォルトで完全一致ではない:[検索方法]の引数を省略すると近似一致(TRUE)になってしまうため、意図せず間違った結果が返される可能性があります。

#N/Aエラーの処理が面倒:検索値が見つからなかった場合、そのままでは#N/Aエラーが表示されてしまうため、IFERROR関数などと組み合わせてエラー処理をする手間があります。


XLOOKUP関数のメリット・デメリット

XLOOKUP関数は、VLOOKUP関数のデメリットをほとんど解消してくれる、まさに次世代の検索関数です。

XLOOKUP関数のメリット

双方向検索が可能左から右だけでなく、右から左への検索も可能です!検索値がある列が、取得したいデータの列よりも右にあっても問題ありません。これはVLOOKUP関数と比べて非常に大きな進化です。

列の挿入・削除に強い:参照する範囲を直接指定するため、途中に列を追加したり削除したりしても、数式が自動的に調整されるため、エラーになりにくいです。

#N/Aエラーを直接処理できる:[見つからない場合]という引数があるため、IFERROR関数を使わなくても、検索値が見つからない場合の表示をカスタマイズできます。

末尾からの検索が可能:[検索モード]で末尾から検索できるため、最新のデータを探すといった場合に便利です。

XLOOKUP関数のデメリット

比較的新しい関数:Excel 2019以前のバージョンでは使えません(Excel 365のみ)。共有する相手が古いバージョンのExcelを使っている場合、エラーになってしまう可能性があります。

使い方が分からない人が多い:会社では色々な人がいて、出来るだけ難しい語句や文節は使わない方が得策です。そのためエクセル操作が得意でない人がいる場合、XLOOKUP関数を使うことでチーム全体の作業効率が落ちてしまう可能性があります。


XLOOKUPとVLOOKUP、結局どっちを使えばいいの?

比較項目VLOOKUP関数XLOOKUP関数
検索方向左から右のみ双方向(左右どちらでもOK!)
列の挿入/削除への耐性弱い(列番号がズレる)強い(自動調整される)
エラー処理IFERROR関数などと組み合わせる必要あり関数内で直接処理可能
一致モードの既定値近似一致(TRUE)完全一致(0)
古いExcelバージョン対応×(Excel 365のみ)
複数条件検索可能可能
あいまい検索可能可能
末尾からの検索不可能可能

まとめると、

基本的には「XLOOKUP関数」を使うのが断然おすすめ!

→ VLOOKUP関数のデメリットをカバーしており、より柔軟で強力な検索が可能です。

ただし、Excel 365以外のバージョンを使っている人とのファイルのやり取りが多い場合チーム内でExcel作業に慣れていない人がいる場合は、まだVLOOKUP関数を使う必要があるかもしれません。

相手のExcel環境に合わせて使い分けるのが賢明です。

Excelの便利な機能は使える人が多い方が良いですし、チームの能力も上がるため、「XLOOKUP関数が使える環境なら、積極的にXLOOKUP関数を使っていこう!」というのが私の見解です!


XLOOKUP関数のもっと便利な使い方・応用例

基本的な使い方が分かったところで、

XLOOKUP関数が持つ、VLOOKUP関数にはなかった便利な機能や応用例を見ていきましょう。

検索値が見つからなかった場合のメッセージ設定

XLOOKUP関数は、検索値が見つからなかった場合に表示するメッセージを直接指定できます。

例2:商品コードが見つからなかった場合に「該当なし」と表示する

見つからない場合の引数を入れることが出来ます!IFERROR関数を入力する必要がないため可読性の高い関数ですね!

入力するXLOOKUP関数: =XLOOKUP(F3,A2:A7,B2:B7,"該当なし")

商品コード「A007」は商品リストに存在しないため、「該当なし」と表示されます。

IFERROR関数を組み合わせる手間が省けて、数式がシンプルになりますね。


右から左への検索(逆引き)

VLOOKUP関数ではできなかった、右から左への検索(逆引き)もXLOOKUP関数なら簡単です。

例3:単価から商品名を取得する

商品リスト

例えば、単価「98000」の商品名を取得したい場合、以下のように入力します。

入力するXLOOKUP関数: =XLOOKUP(F3,C2:C7,B2:B7)

単価が検索範囲(C2:C7)、商品名が戻り範囲(B2:B7)になるので、検索値が戻り値の右側にあっても問題なく検索できることが分かりますね。

XLOOKUP関数の右から左への検索の様子

複数条件での検索(AND条件)

XLOOKUP関数は、少し工夫することで複数の条件で検索することも可能です。

これはVLOOKUP関数では一工夫に必要であった、XLOOKUP関数ならではの強力な機能です。

今回は、以下の「社員データ」のテーブルを使って、「部署」と「役職」の両方が一致する「氏名」を取得してみましょう。


社員データ

表”社員データ”

例えば、「部署が営業部」かつ「役職が主任」の社員の氏名を取得したい場合、以下のように入力します。

検索したい部署検索したい役職結果(氏名)
営業部主任山田太郎

入力するXLOOKUP関数: =XLOOKUP(G3&H3,C2:C6&D2:D6,B2:B6)

少し複雑に見えるかもしれませんが、これは

検索値」と「検索範囲」を&(アンパサンド)で結合して、複数の条件を一つにしているんです。

  • G3&H3:検索したい部署(営業部)と役職(主任)を結合して「営業部主任」という検索値を作成しています。
  • C2:C6&D2:D6:社員データ内の「部署」列と「役職」列を結合して、「営業部主任」「開発部リーダー」といった一時的な検索範囲を作成しています。

このようにすることで、

複数の条件に合致するデータをXLOOKUP関数で効率的に探し出すことができます。

XLOOKUP関数での複数条件検索の様子


ワイルドカード文字でのあいまい検索

XLOOKUP関数は、

ワイルドカード文字(*?)を使って、あいまいな検索をすることもできます。

  • * (アスタリスク):任意の数の文字を表します。(例: “山田*”で「山田」で始まるもの全て)
  • ? (疑問符):任意の1文字を表します。(例: “山?田”で「山」と「田」の間に1文字入るもの)

この機能を使うには、[一致モード]に「2」を指定する必要があります。

例4:名前に「太郎」を含む社員を検索する

検索したい名前結果(氏名)
*太郎*山田太郎

入力するXLOOKUP関数: =XLOOKUP(G3,B2:B6,B2:B6, ,2)

この数式は、「氏名」列の中から「太郎」という文字を含む社員(例:山田太郎)を検索し、その氏名を返します。

XLOOKUP関数でのワイルドカード検索の様子


末尾からの検索

[検索モード]に「-1」を指定すると、範囲の末尾から先頭に向かって検索することができます。

これは、

データが時間順に並んでいて、最新のデータを探したい場合などに非常に役立ちます。

例5:最新の商品コードを取得する

商品リスト

表”商品リスト”

例えば、最新の商品コード(この場合、リストの一番下にあるもの)を取得したい場合、以下のように入力します。

入力するXLOOKUP関数: =XLOOKUP("*", A2:A7, A2:A7, , 2, -1)

少し複雑に見えますが、これは「何でもいいから(*)、A列の中から一番下にあるものを探し、それを返してね」という意味です。

*はワイルドカードとして「任意の文字列」を意味し、[一致モード]を2(ワイルドカード一致)に、[検索モード]を-1(末尾から先頭へ検索)にすることで、最後のデータが取得できます。

XLOOKUP関数での末尾からの検索の様子


XLOOKUP関数を使う上での注意点

XLOOKUP関数は非常に便利ですが、いくつか注意点があります。

Excelのバージョンに注意! 最も重要なのは、Excel 365でしか使えないという点です。XLOOKUP関数を使ったファイルをExcel 2019以前のバージョンで開くと、#NAME?エラーが表示されてしまいます。ファイルを共有する相手のExcel環境を確認してから使用しましょう。

バイナリ検索を使う場合はソートが必要 [検索モード]で2(昇順ソート済み)や-2(降順ソート済み)を指定してバイナリ検索を行う場合は、事前に検索範囲が昇順または降順に並べ替えられている必要があります。ソートされていないデータにバイナリ検索を使うと、誤った結果が返される可能性があるため注意が必要です。


まとめ

この記事では、ExcelのXLOOKUP関数の基本的な使い方から、従来のVLOOKUP関数との比較、そしてXLOOKUP関数ならではの便利な応用例までをご紹介しました。

いかがでしたでしょうか?

XLOOKUP関数は、VLOOKUP関数が抱えていた多くの課題を解決し、より直感的で強力な検索機能を提供してくれる、まさに次世代のExcel関数です。特に、

右から左への検索がしたい時

列の挿入や削除で数式が壊れるのを避けたい時

検索値が見つからなかった時の表示をカスタマイズしたい時

複数の条件で検索したい時

などには、XLOOKUP関数が非常に役立ちます。

もしあなたがExcel 365を使っているなら、ぜひ今日からXLOOKUP関数を積極的に活用してみてください。きっと、日々のデータ検索や集計作業が、これまで以上にスムーズで効率的になるはずです!

もしXLOOKUP関数を使うのが難しい環境にある場合は、VLOOKUP関数も依然として強力なツールです。それぞれの関数の特性を理解し、あなたのExcel環境や目的に合わせて使い分けていきましょう。

コメント

タイトルとURLをコピーしました