Excelでの検索作業において、従来の「VLOOKUP関数」には「左側の列を参照できない」「列番号指定が不便」といった制約がありました。そこで登場したのが、Excel 365 / Excel 2021以降で使える「XLOOKUP関数」です。
XLOOKUPはVLOOKUPの後継として、検索範囲を明示的に指定できる柔軟な関数ですが、1つの条件による検索が基本であり、「複数の条件を組み合わせて検索したい」というニーズに対しては工夫が必要です。
本記事では、ExcelのXLOOKUP関数で複数条件を使う方法を、基本構文・応用例・代替手段との比較・注意点まで含めて徹底解説します。
目次
- ✅ 基本:XLOOKUP関数の構文と特長
- ・ XLOOKUPの主なメリット
- ・ XLOOKUPの制限:「複数条件検索」は直接できない
- ✅ XLOOKUPの検索値を結合して複数条件を実現する(ヘルパー列方式)
- ・ 使用例:社員番号+年度で評価を検索する方法
- ✅ LET関数やTEXT関数と併用して検索値を動的に作る方法
- ✅ FILTER関数で複数条件検索する方法(XLOOKUPの代替)
- ・ 社員番号と年度の両方が一致する評価を抽出する方法
- ✅ INDEX+MATCHの複数条件による代替方法
- ■ 実務での活用シーンまとめ
- ■ よくあるミスと注意点
- ■ XLOOKUPと他関数の比較表(複数条件対応)
- ■ まとめ:XLOOKUPでも複数条件検索は可能!正しい構造を理解しよう
✅ 基本:XLOOKUP関数の構文と特長
=XLOOKUP(検索値, 検索範囲, 戻り値範囲, [見つからなかったときの値], [一致モード], [検索モード])
・ XLOOKUPの主なメリット
- 左方向検索が可能(VLOOKUPでは不可能)
- 列番号ではなく、列そのものを指定できる
- エラー時の代替表示を指定できる
- 完全一致がデフォルト(第4引数を省略してもOK)
・ XLOOKUPの制限:「複数条件検索」は直接できない
XLOOKUPは便利な関数ですが、複数条件(AND条件やOR条件)を直接渡す仕様にはなっていません。
つまり、以下のようなことは標準構文では対応できません:
- 「社員番号と年度が一致する行を検索したい」
- 「商品コードとカテゴリの両方が一致するデータを抽出したい」
【Excel】XLOOKUP関数で複数条件を扱う方法とは?INDEX・FILTERとの違いも解説【実務対応】
✅ XLOOKUPの検索値を結合して複数条件を実現する(ヘルパー列方式)
もっとも基本的でわかりやすいのが、条件となる列を結合して「1つの検索値」にまとめる方法です。
・ 使用例:社員番号+年度で評価を検索する方法
▼ 評価マスタ(A列:社員番号、B列:年度、C列:評価)
| 社員番号 | 年度 | 評価 |
|---|---|---|
| 1001 | 2022 | A |
| 1001 | 2023 | B |
| 1002 | 2022 | B |
▼ 入力シート(A列:社員番号、B列:年度)
=XLOOKUP(A2&B2, 評価マスタ!A2:A100&評価マスタ!B2:B100, 評価マスタ!C2:C100, "該当なし")
■ ポイント:
- 検索値を
"社員番号 & 年度"というように結合 - 検索範囲でも同様に
A列 & B列を結合 - 戻り値はC列(評価)
※ 配列数式のため、Excel 365 / Excel 2021 以降の環境が必要です。
【Excel】VLOOKUP関数で複数条件を活用する方法とは?IFやヘルパー列を使った実践テクニックを徹底解説!
✅ LET関数やTEXT関数と併用して検索値を動的に作る方法
検索キーの結合をよりスマートに行いたい場合、LET関数を使うと、可読性と再利用性が上がります。
=LET(
key, A2&B2,
XLOOKUP(key, 評価マスタ!A2:A100&評価マスタ!B2:B100, 評価マスタ!C2:C100, "該当なし")
)
また、日付や数値の桁数を揃える必要がある場合は TEXT関数も活用できます。
✅ FILTER関数で複数条件検索する方法(XLOOKUPの代替)
XLOOKUPは1件検索に強い関数ですが、FILTER関数を使えば、複数条件で複数件の結果を一括抽出できます。
■ 構文:
=FILTER(戻り値範囲, (条件1範囲=条件1)*(条件2範囲=条件2), "該当なし")
・ 社員番号と年度の両方が一致する評価を抽出する方法
=FILTER(C2:C100, (A2:A100=G2)*(B2:B100=H2), "該当なし")
- G2:検索する社員番号
- H2:検索する年度
→ 複数行が一致する場合でもすべて抽出可能。XLOOKUPでは1件しか返せないため、FILTERの方が高機能。
✅ INDEX+MATCHの複数条件による代替方法
配列対応前のExcelや365以外のバージョンでは、INDEX+MATCH+条件乗算(*)で複数条件を再現可能です。
=INDEX(戻り値範囲, MATCH(1, (条件1範囲=値1)*(条件2範囲=値2), 0))
※配列数式として【Ctrl + Shift + Enter】が必要な環境あり
【Excel】PDFを取り込む方法【データを活用するテクニック】
■ 実務での活用シーンまとめ
| シーン | 条件 | 目的 |
|---|---|---|
| 社員評価 | 社員番号+年度 | 評価情報の検索 |
| 商品管理 | 商品コード+カテゴリ | 商品名・価格の抽出 |
| 売上集計 | 店舗名+月 | 特定店舗の月別売上を検索 |
| 顧客履歴 | 顧客ID+対応日 | 担当者・内容の表示 |
■ よくあるミスと注意点
| トラブル | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 配列が一致しない | 検索値・検索範囲の結合方法が正しいか確認 |
| 該当データがあるのに「該当なし」 | データ型(文字列 vs 数値)の不一致 | TEXT関数でフォーマットを統一 |
| 複数行が一致しても1件しか返されない | XLOOKUPの仕様 | FILTER関数への切り替えを検討 |
■ XLOOKUPと他関数の比較表(複数条件対応)
| 関数 | 複数条件対応 | 特徴 | 推奨用途 |
|---|---|---|---|
| XLOOKUP | △(工夫すれば可能) | 左方向検索、エラー処理が簡単 | 1件の検索に最適 |
| FILTER | ◎(標準で対応) | 複数行の抽出が可能 | 条件に一致する複数行を取得 |
| INDEX+MATCH | ◎(配列式で可能) | 汎用性が高いがやや複雑 | バージョン互換性を重視する場合 |
■ まとめ:XLOOKUPでも複数条件検索は可能!正しい構造を理解しよう
XLOOKUP関数は、VLOOKUPよりも柔軟で強力な検索機能を提供してくれる一方で、「複数条件を直接指定する」機能は持ち合わせていません。
しかし、
- 検索値と検索範囲を結合する方法
- LET関数やTEXT関数との併用
- FILTER関数やINDEX+MATCHによる代替
などの方法を活用することで、実務レベルで複数条件検索を十分に実現可能です。
特に、Excel 365やExcel 2021を使っている方は、XLOOKUPとFILTERを組み合わせることで、より効率的かつ柔軟なデータ処理が可能になります。
VLOOKUPの時代から進化した新しい関数群を使いこなして、検索・抽出作業の自動化と品質向上を目指しましょう!