Excelにおける検索機能の一つであるXLOOKUP関数は、初心者から上級者まで幅広いユーザーにとって便利な機能です。

本記事では、XLOOKUP関数の基本的な使い方から高度な応用方法まで徹底解説します。また、似た機能を持つVLOOKUP関数との違いや、どちらの関数を使うべきかについても詳しく解説します。初心者の方でもわかりやすく、かつ上級者の方にも新たな発見があるような内容ですので、ぜひ最後までご一読ください。

チャット一括管理アプリ「OneChat」が今なら初月無料!!

OneChatのダウンロードはこちらから

XLOOKUP関数の基本的な使い方

excel xlookup

XLOOKUP関数の基本的な使い方についてみていきましょう。

XLOOKUP関数の構文

XLOOKUP関数の基本的な構文は次の通りです。

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

基本的な検索の実行方法

XLOOKUP関数の基本的な検索は、構文の各引数に要素を入力することにより実行することができます。

XLOOKUP関数のそれぞれの引数について詳しくみていきましょう。

引数詳細
検索値検索を実行する対象となる値を指定する
検索範囲検索を実行する配列、または範囲を指定する
戻り配列返す値の配列、または範囲を指定する
見つからない場合検索値が見つからなかった場合に返す値を指定する省略した場合は「#N/A」が返される
一致モード検索方法を指定する完全一致・近似一致・部分一致が選択できる
検索モード検索の方法について指定する先頭から検索・末尾から検索・バイナリ検索が選択できる

参考:XLOOKUP 関数 – Microsoft サポート

実例:簡単な検索の実行

具体的な例を用いて、XLOOKUP関数の簡単な検索の実行手順についてみていきましょう。

例①:商品コードを用いて商品名の検索を行う

行\列AB
1商品コード商品名
2101A
3102B
4103C
5104D
6105E
7106F
8107G
9108H
10109I
行\列DE
1商品コード商品名
2103

上記商品データから、指定した商品コード(例:「D2」セルに入力されている「103」)に該当する商品名をXLOOKUP関数を用いて検索します。この場合の数式は次の通りです。

=XLOOKUP(D2, A2:A10, B2:B10)

この数式では、「D2」セルに入力されている商品コードを「A2」セルから「A10」セルの範囲で検索を行います。そこで一致する商品名を「B2」セルから「B10」セルの範囲から返します。

検索結果

行\列DE
1商品コード商品名
2103C

例②:社員IDを用いて社員名の検索を行う

行\列AB
1社員ID社員名
21101高橋 彩
31102渡辺 美奈
41103佐藤 健
51104小林 裕
61105田中 美咲
71106鈴木 翔太
81107中村 愛
91108山本 健太
101109伊藤 亮
行\列DE
1社員ID社員名
21104

上記社員データから、指定した社員ID(例:「D2」セルに入力されている「1104」)に該当する社員名をXLOOKUP関数を用いて検索します。この場合の数式は次の通りです。

=XLOOKUP(D2, A2:A10, B2:B10)

この数式では、「D2」セルに入力されている社員IDを「A2」セルから「A10」セルの範囲で検索を行います。そこで一致する社員名を「B2」セルから「B10」セルの範囲から返します。

検索結果

行\列DE
1社員ID社員名
21104小林 裕

XLOOKUP関数の高度な使い方

excel xlookup

XLOOKUP関数の高度な使い方についてみていきましょう。

複数条件での検索

XLOOKUP関数を用いた複数条件での検索について紹介します。

XLOOKUP関数自体は複数条件での検索を直接行うことはできません。ただし、工夫することで複数条件での検索を実現することが可能です。具体例を用いて手順について紹介します。

例:部署と役職の2要素を用いて社員名の検索を行う

行\列ABC
1社員名部署役職
2高橋 彩営業部課長
3渡辺 美奈総務部一般職
4佐藤 健IT部主任
5小林 裕人事部部長
6田中 美咲マーケティング部一般職
7鈴木 翔太開発部主任
8中村 愛総務部課長
9山本 健太営業部一般職
10伊藤 亮法務部部長

上記データから、「部署」と「役職」をもとに社員名を検索します。指定した「部署」と「役職」(例:「E1」セルに入力されている「人事部部長」)に該当する社員名を検索するための手順は次の通りです。

①データにキー列を追加する

上記データの任意の場所(例:D列)に検索の条件となる「部署」と「役職」を結合した要素を入力するための列を追加します。この要素は、「&」を用いて行うと簡単です。

以下の数式を「D2」セルに入力しましょう。

=B2&C2

入力した数式を「D3」セル以下にオートフィルを用いてコピーします。

行\列ABCD
1社員名部署役職部署+役職
2高橋 彩営業部課長営業部課長
3渡辺 美奈総務部一般職総務部一般職
4佐藤 健IT部主任IT部主任
5小林 裕人事部部長人事部部長
6田中 美咲マーケティング部一般職マーケティング部一般職
7鈴木 翔太開発部主任開発部主任
8中村 愛総務部課長総務部課長
9山本 健太営業部一般職営業部一般職
10伊藤 亮法務部部長法務部部長

②XLOOKUP関数を入力する

以下のXLOOKUP関数を検索結果を表示したいセル(例:F2)に入力します。

=XLOOKUP(E2, D2:D10, A2:A10)

検索結果

行\列EF
1部署・役職社員名
2人事部部長小林 裕

部分一致検索

XLOOKUP関数では、ワイルドカード(「*」「?」)を用いることで部分一致検索を実行することが可能です。ワイルドカードを文字列に適用することで、適用した文字列の一部に一致するデータを検索することができます。

ワイルドカードの種類と意味は次の通りです。

ワイルドカード詳細
*任意の数の文字に一致する
?任意の1文字に一致する

ワイルドカードの使用したXLOOKUP関数での部分一致検索の方法について具体例を用いて解説します。

行\列AB
1商品名価格
2Dragonfruit120
3Banana100
4Cherry80
5Pineapple180
6Grape160

①任意の文字列を検索する

「Apple」が文字列に含まれる商品名の価格を検索する場合に任意のセル(例:D1)に入力する数式は次の通りです。

=XLOOKUP(“*Apple*”, A2:A6, B2:B6, “見つかりません”, 2)

検索結果

行\列D
1180

②任意の文字を検索する

「Grap」から始まり、5文字目が任意の文字である商品名の価格を検索する場合に任意のセル(例:D1)に入力する数式は次の通りです。

=XLOOKUP(“Grap?”, A2:A6, B2:B6, “見つかりません”, 2)

検索結果

行\列D
1160

範囲外のデータを扱う方法

XLOOKUP関数を用いて、範囲外(検索値が見つからなかった場合)のデータを扱う方法について解説します。

XLOOKUP関数では、データが範囲外である(指定した検索値が見つからなかった)場合に返す値を引数であらかじめ指定することができます。データが範囲外である場合に返す値の指定場所は、第3引数の「戻り配列」です。データが範囲外の場合は、ここで指定した値が返されます。

以下では、具体例を交えて範囲外のデータを扱う方法について紹介します。

例①:商品コードを用いて商品名の検索を行う

行\列AB
1商品コード商品名
2101A
3102B
4103C
5104D
6105E
7106F
8107G
9108H
10109I
行\列DE
1商品コード商品名
2110

上記商品データから、指定した商品コード(例:「D2」セルに入力されている「110」)に該当する商品名をXLOOKUP関数を用いて検索します。この場合の数式は次の通りです。

=XLOOKUP(D2, A2:A10, B2:B10, “見つかりません”)

この数式では、「D2」セルに入力されている商品コードを「A2」セルから「A10」セルの範囲で検索を行います。そこで一致する商品名を「B2」セルから「B10」セルの範囲から返します。該当する商品コードが指定した範囲内に存在しない場合は「見つかりません」と返されます。

検索結果

行\列DE
1商品コード商品名
2110見つかりません

例②:社員IDを用いて社員名の検索を行う

行\列AB
1社員ID社員名
21101高橋 彩
31102渡辺 美奈
41103佐藤 健
51104小林 裕
61105田中 美咲
71106鈴木 翔太
81107中村 愛
91108山本 健太
101109伊藤 亮
行\列DE
1社員ID社員名
21110

上記社員データから、指定した社員ID(例:「D2」セルに入力されている「1110」)に該当する社員名をXLOOKUP関数を用いて検索します。この場合の数式は次の通りです。

=XLOOKUP(D2, A2:A10, B2:B10, “社員が見つかりません”)

この数式では、「D2」セルに入力されている社員IDを「A2」セルから「A10」セルの範囲で検索を行います。そこで一致する社員名を「B2」セルから「B10」セルの範囲から返します。該当する社員IDが指定した範囲内に存在しない場合は「社員が見つかりません」と返されます。

検索結果

行\列DE
1社員ID社員名
21110社員が見つかりません

XLOOKUP関数の応用例

excel xlookup

XLOOKUP関数の応用例について紹介します。

別シートからのデータ検索

XLOOKUP関数を用いて、異なるシートに入力されているデータを検索する方法について、例を用いて紹介します。

Sheet1

行\列A
1商品コード
2101
3102
4103
5104
6105
7106
8107
9108
10109

Sheet2

行\列AB
1商品コード商品名
2101A
3102B
4103C
5104D
6105E
7106F
8107G
9108H
10109I

上記データがSheet1とSheet2にそれぞれ入力されている場合に、Sheet1の商品コードをもとにSheet2の該当する商品名の検索を行います。この場合の数式は次の通りです。

=XLOOKUP(A2, Sheet2!A2:A10, Sheet2!B2:B10, “見つかりません”)

この数式では、Sheet1の「A2」セルに入力されている値(商品コード)を、Sheet2の「A2」セルから「A10」セルの範囲で検索を行います。そこで一致する商品名を「B2」セルから「B10」セルの範囲から返します。該当する商品コードが存在しない場合は、「見つかりません」と返されます。

動的なデータ範囲を使用した検索

Excelで動的なデータ範囲を用いることにより、データの追加や削除が行われた際にも柔軟に対応することができます。下記データを用いて簡単に解説します。

例:商品コードを用いて商品名の検索を行う

Sheet1

行\列A
1商品コード
2101
3102
4103
5104
6105
7106
8107
9108
10109

Sheet2

行\列AB
1商品コード商品名
2101A
3102B
4103C
5104D
6105E
7106F
8107G
9108H
10109I

①Excelのテーブルを用いる

Excelのテーブルを用いることで、データに変更が加えられるたびに自動的に更新が行われます。

今回の例の場合、Sheet2に入力済みのデータに対するテーブルを作成することで、Sheet2のデータに変更が加えられても自動的に更新が行われるように設定します。

  • Sheet2に入力されているテーブルを作成するデータ範囲を選ぶ
  • 「挿入」タブより「テーブル」を選択する
  • 作成した「テーブル」に名前をつける(例:商品情報)

Sheet1の商品コード(例:A2)をもとに作成したSheet2のテーブル内の該当する商品名の検索を行います。この場合の数式は次の通りです。

=XLOOKUP(A2, 商品情報[商品コード], 商品情報[商品名], “見つかりません”)

テーブルを作成し、作成したテーブルを引数として入力することにより、Sheet2のデータに変更が加えられても自動的に更新することができます。

②名前付き範囲を用いる

名前付き範囲を用いることで動的範囲を設定することが可能です。この場合、INDEX関数とCOUNTA関数を組み合わせることにより動的範囲を提起することができます。

この例では、Sheet2の商品コード列・商品名列に名前付き範囲を設定することでSheet2のデータに変更が加えられても自動的に更新が行われるように設定します。

名前付き範囲の設定手順は次の通りです。

  • 「数式」タブをクリック
  • 「名前の管理」を選択
  • 「新規作成」をクリック
  • 表示されたダイアログボックス内のそれぞれの項目を入力する

今回の例では以下の内容を入力しましょう

Sheet2 商品コード

  • 名前:商品コード範囲
  • 範囲:Sheet2
  • 参照範囲:=Sheet2!$A$2:INDEX(Sheet2!$A:$A, COUNTA(Sheet2!$A:$A))

Sheet2 商品名

  • 名前:商品名範囲
  • 範囲:Sheet2
  • 参照範囲:=Sheet2!$B$2:INDEX(Sheet2!$B:$B, COUNTA(Sheet2!$B:$B))

名前付き範囲が設定できたら、Sheet1の任意のセルに次の数式を入力します。(例:Sheet1の「A2」セルの値を検索する)

=XLOOKUP(A2, 商品コード範囲, 商品名範囲, “見つかりません”)

  • A2:Sheet1の検索を行う商品コードが入力されているセル
  • 商品コード範囲:動的に定義した商品コードの範囲の名称
  • 商品名範囲:動的に定義した商品名の範囲の名称
  • “見つかりません”:該当する商品コードがない場合に表示するメッセージ

関連記事:仕事に必携!VLOOKUP関数で劇的に効率アップする方法

XLOOKUP関数と他の関数の組み合わせ

XLOOKUP関数は単体利用でも便利な検索関数ですが、他の関数を組み合わせることにより、さらに高度な分析や操作を実現することが可能となります。

IF関数との組み合わせ

検索結果に基づき条件の評価を行い、異なる結果を返すことができます。

例:指定した社員IDから該当する評価点を検索し、その値に基づいて指定したメッセージを表示する

行\列AB
1社員ID評価点
2110155
3110250
4110385
5110495
6110590
7110680
8110745
9110860
10110965
行\列CD
1社員ID評価
21103

上記データをもとに、「C2」セルに入力された社員IDから対応する評価点の検索を行い、それをもとに「D2」セルに評価点が75点以上の場合は「合格」、それ以外の場合は「不合格」のメッセージを表示します。この場合に「D2」セルに入力される数式は次の通りです。

=IF(XLOOKUP(C2, A2:A10, B2:B10) >= 75, “合格”, “不合格”)

上記数式では、「XLOOKUP(C1, A2:A10, B2:B10)」にて「C1」セルに入力された社員IDを「A2」セルから「A10」セルの範囲で検索し、対応する評価点を「B2」セルから「B10」セルの範囲で返します。IF関数を用いて、検索した評価点の値が75以上であるかを評価し、真の場合は「合格」、偽の場合は「不合格」を返します。

結果

行\列CD
1社員ID評価
21103合格

XLOOKUP関数とVLOOKUP関数の比較

Excelには、XLOOKUP関数意外にも検索関数が用意されています。検索関数の中でも比較的頻繁に用いられることの多いVLOOKUP関数について、XLOOKUP関数との違いを見ていきましょう。

機能とパフォーマンスの違い

機能とパフォーマンス面から比較してみましょう。

XLOOKUPVLOOKUP
検索方向垂直・水平方向のどちらも検索可能で、検索値の入力場所も問いません。垂直方向のみ検索可能で、検索値が最初の列(一番左端)に存在している必要があります。
返される列の指定返される列を引数で指定可能です。そのため、列の追加や削除といった変更に柔軟に対応できます。検索範囲内の左端から数えた列番号で指定します。そのため、列の追加や削除といった変更が加えられると結果が変わることがあります。
エラー処理第4引数でエラー発生時の値を指定することができます。エラー処理を行う際には、IFERROR関数などを組み合わせる必要があります。
検索の型完全一致・近似一致・部分一致検索が可能です。完全一致・近似一致検索が可能です。
複数条件での検索複数条件での検索が可能です。単一条件のみの検索が可能です。
計算速度効率的なアルゴリズムを使用しており、大規模なデータセットで特にパフォーマンスが向上している。大規模なデータセットで用いた場合は、パフォーマンスが低下する場合がある。

どちらの関数を使うべきか?

XLOOKUP関数とVLOOKUP関数、どちらの関数を使うべきでしょうか。

柔軟性やパフォーマンスの高さといった観点から見ると、VLOOKUP関数よりXLOOKUP関数の方が優れていると言えるでしょう。しかし、XLOOKUP関数は使用できるExcelのバージョンが限定されており、他のスプレッドシートソフトウェアとの互換性もない場合が多いです。

XLOOKUP関数の使用がおすすめ

  • XLOOKUP関数がサポートされているバージョンを使用している場合
  • 検索範囲が垂直方向のみではなく水平方向に広がる場合
  • 検索値が表の左端以外に存在する場合
  • 複数条件・部分一致検索を行いたい場合

VLOOKUP関数の使用がおすすめ

  • 複数人で作成したExcelファイルを共有する場合
  • 垂直方向の検索を行いたい場合
  • 検索値が検索範囲の左端に常にある場合

よくある質問

XLOOKUP関数に関連するよくある質問について紹介します。

XLOOKUPはエクセルのどのバージョンで使えますか?

XLOOKUP関数が使用できるExcelのバージョンについて紹介します。

バージョンサポート状況
Microsoft 365⚪️
Excel 2021⚪️
Excel 2019△(※)
Excel 2016△(※)
Excel 2013×
Excel 2010×
Excel 2007×
Excel 2003×

※Excel 2019、およびExcel2016ではXLOOKUP関数を使用することはできませんが、新しいバージョンのExcelを用いて他の人が作成したXLOOKUP関数を含むExcel 2019、およびExcel2016のブックを使用する状況になる場合はあります。

参考:XLOOKUP 関数 – Microsoft サポート

エクセルのXLOOKUPとVLOOKUPの違いは何ですか?

ExcelのXLOOKUP関数とVLOOKUP関数の違いについてみていきましょう。

XLOOKUPVLOOKUP
検索方向垂直・水平方向のどちらも検索可能で、検索値の入力場所も問いません。垂直方向のみ検索可能で、検索値が最初の列(一番左端)に存在している必要があります。
書式=XLOOKUP(検索値, 検索範囲, 戻り配列, [見つからない場合], [一致モード], [検索モード]) =VLOOKUP(検索値, 範囲, 列番号, [検索の型])
返される列の指定返される列を引数で指定可能です。そのため、列の追加や削除といった変更に柔軟に対応できます。検索範囲内の左端から数えた列番号で指定します。そのため、列の追加や削除といった変更が加えられると結果が変わることがあります。
エラー処理第4引数でエラー発生時の値を指定することができます。エラー処理を行う際には、IFERROR関数などを組み合わせる必要があります。
検索の型完全一致・近似一致・部分一致検索が可能です。完全一致・近似一致検索が可能です。
複数条件での検索複数条件での検索が可能です。単一条件のみの検索が可能です。
計算速度効率的なアルゴリズムを使用しており、大規模なデータセットで特にパフォーマンスが向上している。大規模なデータセットで用いた場合は、パフォーマンスが低下する場合がある。

参考:VLOOKUP 関数 – Microsoft サポート

XLOOKUPとは何ですか?

XLOOKUPとは、Microsoft 365、およびExcel 2021以降のバージョンで追加されたExcelの検索関数の一つです。指定した値をデータの範囲内から 検索し、その値に関連するデータを返す際に用いられます。従来のExcelの検索関数であるVLOOKUP関数やHLOOKUP関数に存在した制約を克服し、多数の機能や柔軟性を備えています。

XLOOKUP関数の構文は次の通りです。

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

関連記事:効率的なデータ検索が可能!ExcelのVLOOKUP・HLOOKUP・XLOOKUPマスター術

まとめ

今回は、XLOOKUP関数に関して基本的な使い方から高度な応用方法まで解説しました。

XLOOKUP関数は従来のVLOOKUP関数やHLOOKUP関数に存在した制約がなくなり、様々な機能や柔軟性が備わっている便利な関数です。

Excel Lookup関数に関する重要用語

用語説明
ワイルドカード部分一致検索を実行する際に用いられる特殊文字で、XLOOKUP関数ではワイルドカードを用いた検索が行える。
動的範囲データの追加や削除といった変更に応じて自動的に調整が行われる範囲のことを指す。動的範囲を用いることにより、データに変動が生じても正確な検索結果を返すことができる。