エクセル関数辞典 エクセル関数辞典

XLOOKUP関数の応用テクニック|複数条件・逆方向検索

XLOOKUP 応用 複数条件 Excel関数 Microsoft 365
広告スペース (article-top)

XLOOKUP関数は基本的な検索だけでなく、複数条件での検索や逆方向検索、ワイルドカードを使った部分一致検索など、高度な使い方が可能です。VLOOKUPでは実現が難しかった処理をシンプルな数式で記述できるため、実務での活用範囲が大きく広がります。この記事では、XLOOKUP関数の応用テクニックを実践的な例とともに解説します。

XLOOKUP関数の引数を確認する

応用テクニックに入る前に、XLOOKUP関数の全引数を確認しておきましょう。

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

一致モードの選択肢

動作
0(既定)完全一致
-1完全一致、または次に小さい値
1完全一致、または次に大きい値
2ワイルドカード一致

検索モードの選択肢

動作
1(既定)先頭から末尾へ検索
-1末尾から先頭へ検索(逆方向検索)
2昇順バイナリ検索
-2降順バイナリ検索

これらの引数を使いこなすことで、さまざまな検索パターンに対応できます。

複数条件での検索

XLOOKUPでは、検索値と検索範囲を文字列結合することで、複数の条件を同時に指定した検索が可能です。

部署と役職で社員を検索する

以下のような社員データがあるとします。

A列(部署)B列(役職)C列(氏名)D列(内線)
営業部部長田中太郎1001
営業部課長鈴木花子1002
経理部部長佐藤一郎2001
経理部課長山田美咲2002
総務部部長高橋健一3001

営業部の課長の氏名を取得する数式です。

=XLOOKUP("営業部" & "課長", A2:A6 & B2:B6, C2:C6, "該当なし")

検索値を「営業部課長」とし、検索範囲もA列とB列を結合した値と照合します。結果は「鈴木花子」です。

セル参照で条件を指定する

検索条件をセルから取得する場合の書き方です。F1に部署名、G1に役職名が入力されているとします。

=XLOOKUP(F1 & G1, A2:A6 & B2:B6, C2:C6, "該当なし")

3つ以上の条件

同じ要領で3つ以上の条件にも対応できます。

=XLOOKUP(F1 & G1 & H1, A2:A6 & B2:B6 & C2:C6, D2:D6, "該当なし")

条件が増えても数式の構造は変わりません。結合する列を増やすだけで対応できるのがXLOOKUPの利点です。

逆方向検索(末尾からの検索)

検索モードに-1を指定すると、範囲の末尾から先頭に向かって検索します。同じ検索値が複数ある場合に、最後のデータを取得したいときに使います。

最新の取引記録を取得する

取引履歴データで、同じ顧客の取引が複数記録されている場合を考えます。

A列(顧客名)B列(取引日)C列(金額)
ABC商事2026/1/15500000
DEF工業2026/2/01320000
ABC商事2026/2/20750000
ABC商事2026/3/10680000
DEF工業2026/3/15410000

ABC商事の最新の取引金額を取得する数式です。

=XLOOKUP("ABC商事", A2:A6, C2:C6, "取引なし", 0, -1)

検索モード-1により末尾から検索するため、4行目の680000が返されます。通常の検索(検索モード1)では先頭から検索するため、1行目の500000が返されます。

最新の在庫入荷日を取得する

在庫管理台帳から、特定の商品の最新入荷日を取得する例です。

=XLOOKUP(F1, A2:A100, B2:B100, "入荷なし", 0, -1)

F1に商品名を入力すると、その商品の最も新しい入荷日が返されます。

ワイルドカード検索

一致モードに2を指定すると、ワイルドカードを使った部分一致検索が可能になります。

使用できるワイルドカード

記号意味
*任意の長さの文字列電子
?任意の1文字”A00?”
~エスケープ文字”~*“

商品名の部分一致検索

商品マスタから、商品名に特定のキーワードを含む商品を検索する例です。

A列(商品コード)B列(商品名)C列(単価)
E001ワイヤレスマウス3500
E002有線マウス1200
E003ワイヤレスキーボード5800
E004USBハブ2200

「ワイヤレス」を含む最初の商品コードを取得する数式です。

=XLOOKUP("*ワイヤレス*", B2:B5, A2:A5, "該当なし", 2)

結果は「E001」(ワイヤレスマウス)です。一致モード2を指定しているため、ワイルドカードが有効になります。

前方一致検索

商品コードの先頭が「E00」で始まるデータを検索する場合です。

=XLOOKUP("E00*", A2:A5, B2:B5, "該当なし", 2)

1文字のワイルドカード

商品コードの末尾1文字だけが異なるデータを検索する場合です。

=XLOOKUP("E00?", A2:A5, B2:B5, "該当なし", 2)

「E00」の後に任意の1文字が続くコードに一致します。

バイナリ検索モード

検索モードに2(昇順)または-2(降順)を指定すると、バイナリ検索(二分探索)が実行されます。

バイナリ検索の特徴

特徴通常の検索バイナリ検索
検索速度データ量に比例して遅くなるデータ量が増えても高速
データの前提条件並び順不問昇順または降順に並んでいる必要がある
適したデータ量小〜中規模大規模(数万行以上)

昇順データでのバイナリ検索

社員番号が昇順に並んでいる大規模な社員名簿(数万行)から検索する例です。

=XLOOKUP(F1, A2:A50000, B2:B50000, "該当なし", 0, 2)

検索モード2により、昇順バイナリ検索が実行されます。通常の検索では先頭から1行ずつ確認するため時間がかかりますが、バイナリ検索ではデータを半分ずつ絞り込むため、大幅に高速化できます。

降順データでのバイナリ検索

売上金額が降順(大きい順)に並んでいるランキングデータから検索する場合です。

=XLOOKUP(F1, B2:B1000, A2:A1000, "該当なし", 0, -2)

検索モード-2で降順バイナリ検索を実行します。

バイナリ検索の注意点

  • データが正しく並んでいないと、誤った結果を返す可能性があります
  • 並び順が保証されていない場合は、通常の検索モード(1または-1)を使用してください
  • 数百行程度のデータでは、通常の検索でも十分高速なため、バイナリ検索のメリットは限定的です

複数列の結果を一括取得する

XLOOKUP関数は、戻り範囲に複数の列を指定することで、検索結果を複数列に一括で展開できます。

商品情報をまとめて取得する

商品コードから商品名、カテゴリ、単価をまとめて取得する例です。

A列B列C列D列
商品コード商品名カテゴリ単価
P001コピー用紙文具3500
P002トナーOA12000
P003ボールペン文具150
=XLOOKUP("P002", A2:A4, B2:D4, "該当なし")

戻り範囲をB2:D4(3列)に指定しているため、結果が3つのセルにスピル(自動展開)されます。1つの数式で商品名、カテゴリ、単価がすべて取得できます。

スピルを活用した一覧表の作成

複数の検索値に対して一括で結果を取得する場合は、検索値も配列で指定できます。

=XLOOKUP(F2:F5, A2:A4, B2:D4, "該当なし")

F2:F5に入力された4つの商品コードに対して、それぞれの商品情報が一括で展開されます。

近似一致の活用

一致モード-1(次に小さい値)や1(次に大きい値)を使うと、料金表やランク判定に活用できます。

送料テーブルの参照

購入金額に応じた送料を求める例です。

A列(金額下限)B列(送料)
0800
3000500
5000300
100000

購入金額が4500円のとき、該当する送料を取得する数式です。

=XLOOKUP(4500, A2:A5, B2:B5, , -1)

一致モード-1により、4500以下の最大値である3000の行が選ばれ、送料500が返されます。VLOOKUPのTRUEモードと同じ動作ですが、XLOOKUPでは意図が明確に表現できます。

評価ランクの判定

テストの点数に応じたランクを判定する例です。

A列(基準点)B列(ランク)
0D
60C
70B
85A
95S
=XLOOKUP(78, A2:A6, B2:B6, , -1)

78以下の最大値は70なので、ランクBが返されます。

まとめ

XLOOKUP関数の応用テクニックを活用すれば、複雑な検索処理もシンプルな数式で実現できます。以下のポイントを押さえておきましょう。

  • 複数条件検索は、検索値と検索範囲の文字列結合で対応できる
  • 検索モード-1で末尾から検索し、最新のデータを取得できる
  • 一致モード2でワイルドカードを使った部分一致検索が可能
  • 大量データにはバイナリ検索モード(2または-2)で高速化できる
  • 戻り範囲に複数列を指定すると、結果がスピルで一括展開される

XLOOKUPはMicrosoft 365およびExcel 2021以降で利用可能です。これらの応用テクニックを使いこなすことで、VLOOKUPとINDEX+MATCHの組み合わせで書いていた複雑な数式を大幅に簡素化できます。

広告スペース (article-bottom)

あわせて読みたい