❕本ページはPRが含まれております
日々のExcel業務、本当にお疲れ様です。
データ集計をしていると、「店舗名と商品名の両方に一致するデータを引っ張ってきたい」という場面に必ず遭遇しますよね。
VLOOKUP関数では1つの条件しか指定できず、限界を感じてXLOOKUP関数にたどり着いたのではないでしょうか。
結論から言うと、XLOOKUP関数で複数条件の検索は可能です。
しかし、ネット上の数式をそのままコピペして、うまくいかずに悩んでいませんか?
実は、あなたのやりたいことが「1件のデータを見つけたい」のか、「当てはまる複数のデータをすべて抽出したい」のかによって、選ぶべき関数が変わってきます。
本記事では、ただ数式を紹介するだけでなく、「あなたの表に最適な数式の選び方」から、実務でデータが壊れないための回避策までを徹底的に解説します。
読み終える頃には、どんな複雑な表を渡されても、自信を持って数式を組めるようになっているはずです。
XLOOKUPで複数条件はできる?先に結論
冒頭でもお伝えした通り、XLOOKUPを使って複数条件で検索することは十分に可能です。
ただし、最短で正解にたどり着くためには、まず「返したい結果の数」を確認してください。
最重要チェックポイント
- 結果が「1件」だけ欲しい → XLOOKUP関数
- 結果が「複数件」あるので全て欲しい → FILTER関数
1件返したいならXLOOKUP
「担当者名」と「日付」を指定して、その日の「売上金額」を1つだけ引っ張ってきたい。
このようなケースでは、迷わずXLOOKUP関数を採用しましょう。
XLOOKUPの基本仕様は「最初に見つかった一致を返す」ことです。複数条件を指定した場合でも、条件に合致した一番上(または一番下)のデータ1件だけを取得するのに向いています。
XLOOKUP 関数は、配列または範囲を検索し、最初に見つかった一致に対応する項目を返します。
Microsoftサポート XLOOKUP 関数
複数件返したいならFILTER
一方で、「東京都」の「A商品」を買った「顧客リスト全員」を抽出したい場合はどうでしょうか。
該当するデータが2件以上ある場合、XLOOKUPでは最初の1人目しか取得できません。
複数件の結果をバッと一覧で返したい場合は、FILTER関数を使います。
ネットで「XLOOKUP 複数条件」と検索してもうまくいかない人の大半が、実はこの「FILTER関数を使うべき場面だった」という罠にハマっています。
XLOOKUP複数条件の基本式【2条件AND】
ここからは、「条件Aと条件Bの両方に一致する」という、基本の2条件AND検索の作り方を解説します。
実務でよく使われるのは、主に「連結方式」と「TRUE/1検索方式」の2パターンです。
連結方式
一番直感的で分かりやすいのが、検索値も検索範囲も「&(アンパサンド)」で繋いでしまう方法です。
=XLOOKUP(検索値1 & 検索値2, 検索範囲1 & 検索範囲2, 戻り値の範囲)「りんご」と「青森県」を探したいなら、検索値を「りんご青森県」としてしまい、探す範囲の列も「商品列&産地列」として繋げて探すというパワープレイです。
初心者にも数式の意図が伝わりやすいのが大きなメリットです。
TRUE/1検索方式
もう一つの王道が、論理式(ブール演算)を使った方法です。
少し難しく見えますが、実務ではこちらの方が安全で汎用性が高いです。
=XLOOKUP(1, (検索範囲1=検索値1) * (検索範囲2=検索値2), 戻り値の範囲)なぜ「1」を探すのでしょうか?
Excelでは、条件に一致すると「TRUE(=1)」、一致しないと「FALSE(=0)」という判定が内部で行われます。
条件1が一致(1)し、かつ条件2も一致(1)した場合、1 * 1 = 1 になります。どちらかが一致しなければ 1 * 0 = 0 です。
つまり、掛け算(*)をすることでAND条件を作り出し、結果が「1」になった行を引っ張ってくる、というスマートなロジックなのです。
=XLOOKUP(1,(条件1)*(条件2),戻り範囲)
条件が一致すれば「TRUE(1)」、しなければ「FALSE(0)」となり、全て「TRUE」の場合のみ積が「1」となります。
Sky Group 技術ブログ
OR条件・3条件以上に広げる方法
実務では2つの条件だけでは済まないことも多いですよね。
条件が複雑になった場合の対応方法を見ていきましょう。
OR条件
「条件Aまたは条件Bのどちらかに一致する」というOR条件を作りたい場合、先ほどの掛け算(*)を足し算(+)に変えるだけです。
=XLOOKUP(1, ((範囲1=値1) + (範囲2=値2) > 0) * 1, 戻り値の範囲)足し算にすると、どちらかがTRUE(1)なら結果は1以上になります。
この「TRUE方式と配列演算」を組み合わせることで、XLOOKUPでも柔軟なOR条件検索が実現できます。
3条件以上
3つ以上の条件(AND条件)を指定したい場合は、単にカッコとアスタリスク(*)を増やしていくだけです。
=XLOOKUP(1, (範囲1=値1) * (範囲2=値2) * (範囲3=値3), 戻り値の範囲)店舗 × 商品名 × 会員種別 のように、キーとなる列が複数ある場合に大活躍します。
AND/OR混在
「関東エリアで、かつ(A商品またはB商品)を買った人」のように、ANDとORを混ぜたい場合は、算数の計算と同じようにカッコでくくって優先順位をつけます。
=XLOOKUP(1, (エリア範囲="関東") * ((商品範囲="A") + (商品範囲="B") > 0), 戻り値の範囲)XLOOKUPでうまくいかない原因
「数式は合っているはずなのに、エラーが出る!違うデータが返ってくる!」
そんな時は、以下の4つのポイントを確認してください。
最初の一致しか返らない
データの中に、条件に完全に一致する行が2つ以上ある場合、XLOOKUPは一番上にあるデータを返して処理を終了します。
あなたが下の方にあるデータを求めていたとしても、見つけてくれません。
もし一番下のデータが欲しいなら、第6引数の「検索モード」を「-1(末尾から検索)」に設定する必要があります。
文字列連結の衝突
先ほど紹介した「連結方式」には、実は恐ろしい罠が潜んでいます。
昔、売上集計で担当者名とエリアを単純に連結したときのことです。
・担当者「小林」+ エリア「神奈川」 = 小林神奈川
・担当者「小林神」+ エリア「奈川」 = 小林神奈川
なんと、全く別人のデータが同じ検索キーになってしまい、他人の売上を引っ張ってきて大問題になりました。
区切り文字を入れずに連結するのは、実務では本当に危険です。
この事故を防ぐためには、検索値1 & "-" & 検索値2 のように、データに絶対に存在しない記号(ハイフンやアンダーバー)を区切り文字としてはさむ習慣をつけましょう。
日付/数値/文字列の型不一致
見た目は同じ「2026/04/21」でも、セルAは日付データ(シリアル値)、セルBは単なる文字列で入力されていると、Excelは「一致しない(#N/A)」と判断します。
数値の「1」と全角の「1」のズレもよくある原因です。うまくいかない時は、検索値と検索範囲のデータ型が揃っているか確認してください。
FILTERで#CALC!
複数件返すためにFILTER関数を使った際、条件に一致するデータが1件もないと「#CALC!」という見慣れないエラーが出ます。
これを防ぐには、FILTER関数の第3引数「if_empty」に、見つからなかった時の表示(例えば “” や “該当なし”)を指定しましょう。
FILTER関数が空の配列を返すと、#CALC! エラーが発生します。
このエラーを解決するには、if_empty 引数を追加します。
Microsoftサポート #CALC! を修正する
補助列あり/なしのベストプラクティス
複数条件の検索を組むとき、「元データに検索用の作業列(補助列)を作るべきか?」という悩みもよく聞かれます。
それぞれのベストな選択基準をまとめました。
補助列あり:保守しやすいケース
元データの右端などに、あらかじめ =A2&"-"&B2 のような検索キーの列を作っておくパターンです。
数式がシンプルな単一条件のXLOOKUPになるため、他の人がファイルを引き継いだ際にも理解されやすく、保守性が高くなります。
「社内の誰もが触る共有ファイル」の場合は、あえて補助列を作るのが親切です。
補助列なし:式だけで完結させるケース
元データがシステムから出力されたもので、列を追加したり加工したりすると業務に影響が出る場合は、補助列を作れません。
この場合は、先ほど紹介した「TRUE/1検索方式」を使って、数式内だけで完結させる必要があります。
LETで読みやすくする
数式内で完結させようとすると、どうしても式が長くなり、後から見返した時に解読不能になりがちです。
そんな時は、LET関数を組み合わせて中間計算に名前を付けると、劇的に可読性が向上します。Excel 2021以降であれば使えるので、中級者以上はぜひ取り入れたい設計です。
XLOOKUP・FILTER・XMATCHの使い分け
最後に、状況に応じた最適な関数の選び方を整理しました。
この表を覚えておけば、もう関数選びで迷うことはありません。
| 目的 | 推奨関数 | 代表的な式 | 注意点 |
|---|---|---|---|
| 1件だけ返す | XLOOKUP | =XLOOKUP(1,(A:A=H1)*(B:B=H2),C:C) |
最初の一致のみを取得する |
| 複数件すべて抽出 | FILTER | =FILTER(C:C,(A:A=H1)*(B:B=H2),"") |
空集合時のエラー(#CALC!)対策が必要 |
| 一致する「位置(行)」が知りたい | XMATCH | =XMATCH(1,(A:A=H1)*(B:B=H2)) |
値ではなく相対位置を返す |
XLOOKUPで複数条件が難しい人向けの学習手段
ここまで解説してきましたが、「やっぱり配列演算とか、カッコの数が合わなくてエラーになってしまう…」と頭を抱えている方もいるかもしれません。
ネットの断片的な情報を繋ぎ合わせるよりも、一度体系的に学んでしまった方が、結果的に圧倒的な時短になります。
実務で即戦力になるExcelスキルを身につけたい方には、動画で視覚的に学べるオンライン教材や、そのまま実務に流用できるテンプレート集を活用するのがおすすめです。
🚀 実務で使えるExcelスキルを最短でマスター
「数式を壊すのが怖い」「基礎から体系的に学びたい」という方へ。
プロが教えるオンライン講座なら、エラーの回避法から高度な関数の組み合わせまで、明日から使えるスキルがサクッと身につきます。
関数は「暗記」するものではなく、「引き出し」を増やすものです。
今回紹介した数式パターンをあなたの表に合わせて活用し、面倒な集計作業をサクッと終わらせましょう!
“`


