Excelでデータベースから特定の値を検索する際、条件が1つだけでなく、「店舗が『東京』」かつ「商品が『りんご』」といった「複数条件(AND条件)」に合致するデータを取り出したい場面は非常によくあります。従来のVLOOKUP関数では、マスタデータに無理やり「店舗名+商品名」という作業用の結合列を新しく追加するか、極めて複雑な配列数式を書かなければならず、非常に手間がかかっていました。
Microsoft 365やExcel 2021以降の環境で使用できる「XLOOKUP(エックスルックアップ)関数」なら、作業列を一切作成することなく、スマートな記述で簡単に複数条件を指定してデータ抽出を行うことができます。条件を繋ぐ「&」記号を使用した直感的な書き方から、より複雑な計算式にも対応できる「1(フラグ)」を用いた配列掛け算の応用テクニックまで図解します。数式の作成や管理の時間を最小限に抑え、スマートに業務を処理して定時退勤を実現しましょう!
- XLOOKUPは、検索キーと検索範囲のそれぞれを「&」で連結するだけで複数条件検索ができること
- マスタデータに不要な「作業列(ヘルパー列)」を追加する必要がなくなり、表をクリーンに保てること
- 各条件の判定結果(真偽値)を掛け合わせる(*)ことで、より複雑な条件判定の抽出も可能なこと
- 検索範囲と対応範囲のサイズ(開始行と終了行)が完全に一致していないと、#VALUE!エラーになること
ジャンプできる目次📖
複数条件の検索方法:従来の手法とXLOOKUPの違い
Excelで複数条件を指定してデータ検索を行うためのアプローチはいくつか存在します。XLOOKUPを使用する方法が、従来のやり方と比べていかにシンプルで優れているかを比較整理しましょう。
作業列も配列数式も不要になるメリット
第1の従来の手法は、マスタの左側に「作業列(結合列)」を作成する方法です。例えば、A列に店舗、B列に商品名がある場合、新しく挿入した列に =A2&B2 という数式を入れて「東京りんご」という結合キーを作り、それをVLOOKUPで検索します。最も簡単ですが、マスタデータの列数が増え、シート全体の構造が汚くなるデメリットがありました。
第2の従来の手法は、「INDEX + MATCH関数」を配列数式として記述する方法です。作業列は不要ですが、{=INDEX(C2:C10, MATCH(1, (A2:A10=条件1)*(B2:B10=条件2), 0))} のように極めて難解な数式になり、入力時に Ctrl + Shift + Enter を要求されるなど、作成やメンテナンスの難易度が非常に高い欠点がありました。
XLOOKUPを使用した複数条件抽出は、これらの不満を完璧に解決します。作業列を作ることなく、数式バーに直感的な範囲結合を記述するだけで、Excelが内部で一瞬で複数条件のデータ抽出を行ってくれます。
以下に、複数条件データ抽出における3つのアプローチの特徴やメリット・デメリットを整理しました。
| 検索手法 | 作業列の作成 | 数式のシンプルさ | 保守性・安全度 | 実務での評価と推奨度 |
|---|---|---|---|---|
| VLOOKUP + 作業列作成 | 必要(マスタの構造を変更) | 普通(結合キー同士を検索) | 普通(列の追加でずれるリスクあり) | 古いExcel環境向け(推奨度:★☆☆) |
| INDEX + MATCH 配列数式 | 不要 | 非常に難解(配列数式の知識が必要) | 低い(誰かが数式をいじると壊れやすい) | 中級者以上向け(推奨度:★★☆) |
| XLOOKUP 複数条件指定 | 不要 | 明快(「&」で連結するだけ) | 極めて高い(自動追従・壊れにくい) | 現代のベストプラクティス(推奨度:★★★) |
XLOOKUPが使える環境であれば、これ以外の古い方法を選択する理由はありません。次の章から、最も基本となる「&(アンパサンド)」で結合する複数条件の書き方を見ていきましょう!
自分以外のメンバーがシートを使用する際、複雑な配列数式や不要な作業列があると、「これ何のための列ですか?」と聞かれたり、誤って消去されてシート全体が動かなくなるトラブルが頻発します。最もシンプルで分かりやすいXLOOKUPで構築しておくことで、不要な質問対応やバグ修正の手間を完全にゼロにし、スマートに仕事を片付けて定時で退社することができます。
【基本編】XLOOKUPで「&」を使い複数条件を指定する基本の書き方
ExcelでXLOOKUP関数を使って複数条件(AND条件)を指定する最も簡単で直感的な方法が、条件同士を「&(アンパサンド)」で結合する書き方です。作業用の列を追加することなく、数式の中だけで結合キーを自動生成する手順を詳しく図解します。

&結合を使ったXLOOKUPの基本構文
2つの条件(店舗名と商品名など)を組み合わせてデータを検索する場合の構文は以下のようになります。
=XLOOKUP(条件1 & 条件2, 検索範囲1 & 検索範囲2, 対応範囲, [見つからない場合])
- 条件1 & 条件2:「検索値」となる2つのセルを
&で結合して指定します(例:A2 & B2)。 - 検索範囲1 & 検索範囲2:マスタデータの中で、それぞれの条件を探しに行く2つの「縦1列のセル範囲」を、同様に
&で結合して指定します(例:Master!$A$2:$A$10 & Master!$B$2:$B$10)。 - 対応範囲:最終的に抽出したいデータが入力されている範囲を1列で指定します(例:
Master!$C$2:$C$10)。
具体的な数式入力の具体例
例えば、手元のセル E2 に「店舗名」、F2 に「商品名」が入力されており、この2つの組み合わせに対応する価格をマスタ(別シート)から引っ張りたい場合、以下の数式を記述します。
=XLOOKUP(E2 & F2, Master!$A$2:$A$100 & Master!$B$2:$B$100, Master!$C$2:$C$100, "該当なし")
■ Excelの内部処理の仕組み:
この数式を実行すると、Excelの内部では以下のような処理が一瞬で行われます。
- 検索キーとして
E2("東京")とF2("りんご")をくっつけた「東京りんご」という文字列を作成します。 - 次に、マスタのA列(店舗名)とB列(商品名)を行ごとに連結し、「東京りんご」「東京みかん」「大阪りんご」…といった仮想の結合リストをメモリ上に組み立てます。
- 組み立てたリストの中から「東京りんご」を探し出し、見つかった行のC列(価格)を抽出します。
このように、従来はシートに列を追加して行っていた作業を、XLOOKUPがバックグラウンドで自動的に処理してくれるため、シート全体を非常に綺麗に保つことができます。
- 3つ以上の条件がある場合も、
条件1 & 条件2 & 条件3、範囲1 & 範囲2 & 範囲3のように繋ぐだけで無限に条件を増やすことができること - 検索値と検索範囲の結合する順番(並び順)は、上下で完全に一致している必要があること
数式を入力する際、検索キーを E2 & F2(店舗 & 商品)の順番で指定したならば、検索範囲も必ず A列 & B列(店舗列 & 商品列)の順番で記述しなければなりません。
もし検索値を E2(店舗) & F2(商品) と書き、範囲を B列(商品) & A列(店舗) と逆に結合してしまうと、Excelは「東京りんご」というキーを「りんご東京」が並ぶリストの中から探すことになるため、データが合致せず「#N/A(または指定したエラーメッセージ)」が返ってきてしまいます。結合する順番が一致しているか必ず確認してください。
【応用編】「1」と「条件式の掛け算(*)」による高度な複数条件指定
基本編で紹介した「&」による結合は手軽で便利ですが、実務においては「価格が1,000円以上」といった数値の大小比較や、日付の期間指定、あるいは「条件Aまたは条件B(OR条件)」のような、単純な文字列結合では表現できない複雑な複数条件検索が必要になるケースがあります。
これを実現するのが、検索値を「1」とし、複数の条件判定式を「掛け算(*)」で結合する「条件式掛け算方式」のXLOOKUP数式です。プロのExcel開発でも多用される、より強力な応用手順を解説します。

条件式掛け算方式のXLOOKUP基本構文
条件式を掛け合わせる場合の記述方法は以下のようになります。検索値に「1」を指定するのが最大の特徴です。
=XLOOKUP(1, (検索範囲1=条件1) * (検索範囲2=条件2), 対応範囲, [見つからない場合])
- 検索値(第1引数):数値の「
1」を指定します。 - 検索範囲(第2引数):
(範囲=条件)という判定式を作り、それぞれを「*(掛け算)」記号で繋ぎます。 - 対応範囲(第3引数):抽出したいデータ範囲を指定します。
具体的な入力の具体例と仕組み
例えば、「店舗名(A列)が東京」かつ「売上が1,000以上」に合致する「担当者名(C列)」を抽出したい場合、以下の数式を記述します。
=XLOOKUP(1, (Master!$A$2:$A$100="東京") * (Master!$B$2:$B$100>=1000), Master!$C$2:$C$100, "該当なし")
■ なぜこの数式で抽出できるのか?仕組みの解説:
この数式では、Excelが判定式を計算して、内部で以下のような「1」と「0」のリストを作成しています。
(Master!$A$2:$A$100="東京")の部分は、東京である行には「TRUE(1)」、そうでない行には「FALSE(0)」の配列を作ります。(Master!$B$2:$B$100>=1000)の部分も、売上が1000以上の行には「TRUE(1)」、そうでない行には「FALSE(0)」の配列を作ります。- この2つの判定配列を掛け合わせます(
*)。ExcelではTRUE * TRUEは 「1 * 1 = 1」 となり、片方でもFALSE(0)が含まれていると1 * 0 = 0や0 * 0 = 0となります。つまり、両方の条件を完全に満たした行だけが「1」となり、それ以外の行はすべて「0」になります。 - XLOOKUP関数は、この掛け算リストの中から検索値である「1」を探し出し、対応するC列(担当者名)を抽出します。
■ OR条件(どちらか一方を満たす)にする方法:
AND条件(かつ)ではなく、「店舗名が東京」または「売上が1000以上」といったOR条件で検索したい場合は、掛け算記号(*)の代わりに足し算記号(+)を使用します。足し算をすると、いずれか一方でも条件を満たしていれば合計値が1以上になるため、検索値の部分を「>0」などと判定させることで簡単にOR条件検索が構築できます。
- 数値の大小比較(
>=や<)や、データが空でないことの判定(<>"")などを条件に直接組み込めること - 文字列結合(&)と比べて、PCのメモリ消費が少なく動作が軽いため、データが数万行あるシートでも安定して動作すること
「複数の条件をチェックしながら、目でデータを1行ずつ探してコピペする」という作業は、ミスの原因になるだけでなく、最も時間のかかる非効率的な作業です。XLOOKUPの掛け算条件式を設定しておけば、Excelが自動で複雑な論理判定を行って目的のデータを抜き出してくれます。手作業の照合時間を完全にゼロにして、スマートに定時で退社しましょう!
ExcelのXLOOKUP複数条件検索に関するFAQ
複数条件を指定したデータ抽出を実務で行う際に、つまづきやすいポイントやエラー対策についてQ&A形式で解説します。
Q1:複数条件を設定したXLOOKUPで「#VALUE!」エラーが出る原因は?
結合している「検索範囲」のサイズ(行数)が上下でズレていることが原因です。
XLOOKUPの複数条件検索では、結合するすべての範囲のサイズが完全に一致している必要があります。例えば、条件1の範囲が Master!$A$2:$A$100(99行分)であるなら、条件2の範囲も Master!$B$2:$B$100(99行分)でなければなりません。これが $B$2:$B$90 のように1行でもズレていると、配列の結合や掛け算処理ができなくなり、強制的に「#VALUE!」エラーが発生します。数式の範囲指定をよく確認してください。
Q2:条件の数が増えた場合、何個まで結合することができますか?
技術的な上限は特にありませんが、数式の可読性のために「最大3〜4個」程度に留めるのが無難です。
条件が5個、6個と増えていくと、数式が極端に長くなり、カンマや括弧の入力ミスを探すのが非常に困難になります。もし5個以上の複雑な条件検索を行いたい場合は、マスタデータの設計自体を見直して結合コードを作るか、Excelの「Power Query(パワークエリ)」などのデータクレンジング機能を利用することをお勧めします。
Q3:AND条件とOR条件を組み合わせたい(例: 「東京店舗」かつ「商品は りんご または みかん」)場合の書き方は?
応用編で解説した「条件式掛け算方式」をベースに、優先度を示す「( )」と「+」を組み合わせて記述します。
算数と同じように、カッコの中の計算が優先される仕組みを利用します。店舗が東京(AND)で、商品がりんごまたはみかん(OR)という条件を作る場合は、以下のように数式を組み立てます。
(店舗範囲="東京") * ((商品範囲="りんご") + (商品範囲="みかん"))
このようにOR条件の部分を「+」で繋いでカッコで囲み、それ全体に対してAND条件の「*」を掛けることで、複雑な組み合わせの条件抽出も1つの数式でスマートに完了させることができます。
まとめ:XLOOKUP複数条件抽出をマスターしてExcel業務を一瞬で完了!
今回は、ExcelでXLOOKUP関数を使って複数条件(AND条件・OR条件)に合致するデータを抽出する2つの方法(&結合方式、条件式掛け算方式)と、それぞれの仕組みについて解説しました。ポイントをおさらいしておきましょう。
- 作業列(ヘルパー列)を作ることなく、数式内だけで複数条件に合致するデータを検索できる
- 手軽で簡単な「&結合方式」は、検索値と検索範囲をそれぞれ
&で繋ぐだけでAND検索ができる - 結合する並び順(店舗 & 商品など)が上下の引数で完全に一致しているか確認する
- 数値の大小比較や複雑なOR判定を含む場合は、検索値を「1」にする「条件式掛け算方式」を使う
- 数式エラー「#VALUE!」を防ぐため、すべての条件範囲の行番号が上下で完全一致しているか確認する
複数条件のデータ抽出のために、マスタに不要な列を追加して表を汚したり、手作業でデータを照合して時間を浪費したりする必要はもうありません。XLOOKUPの結合・掛け算の書き方をマスターし、どんな複雑な条件指定であっても一瞬でデータを引けるようにしましょう。
Excelの処理スピードを限界まで高めて仕事を効率化し、今日もスマートに定時で退社してプライベートの時間をのんびり満喫しましょう!
Excelの「ExcelのXLOOKUP関数で複数条件を指定してデータ抽出する手順」の操作と組み合わせて覚えておくと便利な、「Excelでグラフをおしゃれにするデザインのコツと配色設定」の具体的な設定手順や、「Excelで特定の文字を含む行を一括削除する手順」の活用テクニックを以下の関連記事にまとめました。Excelのデバッグやデータ整理の時間を大幅に削減して、今日もすっきり定時に退社しましょう!