XLOOKUPで複数条件を指定する方法!OR・ANDを使った検索の応用テクニック

XLOOKUPで商品名だけ検索すると同じ商品が複数出てきて、正しい金額が返ってこない。部署名と氏名を組み合わせたいのに、1つの条件しか指定できず手が止まる。Excelで集計表を作っていると、こういう場面にかなりの確率でぶつかります。

XLOOKUPは1つの検索値を探す関数ですが、検索範囲の作り方を工夫すれば複数条件で検索できます。AND条件なら条件同士を掛け算し、OR条件なら条件同士を足し算する。ここさえ理解すれば、「担当者が田中で、商品がAの商品コードを返す」「地域が東京または大阪の売上を探す」といった検索が可能になります。

ロロメディア編集部でも、広告レポートの管理表で「媒体名」「月」「キャンペーン名」の3条件を使って費用を引くことがあります。最初はVLOOKUP用に結合列を作っていましたが、XLOOKUPに変えてから、作業列を増やさずに検索できる場面が増えました。とはいえ、数式を少し間違えると全部#N/Aになります。だからこそ、仕組みから押さえるのが近道です。

目次

XLOOKUPで複数条件を指定する基本は条件式を1と0に変えること

XLOOKUPで複数条件を指定する基本は条件式を1と0に変えること

XLOOKUPで複数条件を指定するときの基本は、「条件に合う行を1、合わない行を0に変える」ことです。XLOOKUPは検索値を検索範囲から探す関数なので、複数条件に合った行だけが1になる配列を作り、その1を検索します。

たとえば、A列に担当者、B列に商品名、C列に金額があるとします。「担当者が田中、商品名がノート」の金額を返したい場合、A列だけを見ても足りません。田中さんが複数商品を扱っているかもしれませんし、ノートを複数人が扱っているかもしれないからです。

このときは、A列が田中かどうか、B列がノートかどうかをそれぞれ判定し、両方合っている行だけを検索対象にします。XLOOKUP自体はMicrosoft公式でも、検索値を検索範囲から探して対応する戻り範囲の値を返す関数として説明されています。複数条件では、この「検索範囲」を条件式で作るのがコツです。

AND条件は条件式を掛け算して1を探す

会議前に急いで管理表を直しているとき、「田中さんのノートの金額だけ出したいのに、別の商品が返ってくる」と焦ることがあります。原因は、検索条件が1つだけでは行を一意に決められないからです。

AND条件とは、複数の条件をすべて満たす検索です。Excelでは、TRUEを1、FALSEを0のように扱えるため、条件式を掛け算すると、すべての条件を満たした行だけが1になります。

基本形は次の通りです。

=XLOOKUP(1,(A2:A100="田中")*(B2:B100="ノート"),C2:C100)

この式では、A列が田中なら1、違えば0になります。B列がノートなら1、違えば0です。掛け算すると、1×1の行だけが1になり、どちらかが違う行は0になります。XLOOKUPはその1を探し、同じ行のC列から金額を返します。

3条件以上でも考え方は同じ

条件が2つから3つに増えると、急に難しく見えます。でも、やっていることは同じです。条件式をもう1つ掛けるだけです。

たとえば、「担当者が田中」「商品がノート」「地域が東京」の3条件で金額を返すなら、次のように書きます。

=XLOOKUP(1,(A2:A100="田中")*(B2:B100="ノート")*(D2:D100="東京"),C2:C100)

ここで大切なのは、各範囲の行数をそろえることです。A2:A100、B2:B100、D2:D100、C2:C100のように、開始行と終了行を合わせます。範囲がズレると、思った値が返らなかったり、エラーになったりします。

実務では、複数条件のXLOOKUPで一番多いミスが範囲ズレです。数式だけ見ていると気づきにくいので、まずは同じ行数になっているか確認してください。

XLOOKUPでAND条件を使う実務パターン

XLOOKUPでAND条件を使う実務パターン

AND条件は、ビジネスの管理表でかなり使います。顧客名だけでは重複する。商品名だけでも重複する。日付だけでも重複する。だから、複数の条件を組み合わせて1行を特定します。

たとえば請求管理、在庫管理、広告費管理、営業案件管理では、1つの条件だけで正しい行を取れることのほうが少ないです。むしろ「月」「担当者」「案件名」「媒体名」などを組み合わせて、ようやく対象行が決まることが多いでしょう。

ロロメディア編集部でも、広告レポートで「媒体名がGoogle」「月が2026年5月」「キャンペーン名が指名系」の費用を引くようなケースがあります。ここで媒体名だけ検索すると、別月の費用が返ってしまいます。数字のミスは、提出直前に気づくと本当に冷や汗が出ます。

顧客名と商品名で単価を検索する

営業管理表でよくあるのが、「顧客名」と「商品名」の組み合わせで単価を引くケースです。同じ商品でも顧客ごとに単価が違う場合、商品名だけでは正しい単価を返せません。

たとえば、A列に顧客名、B列に商品名、C列に単価があるとします。E2に顧客名、F2に商品名を入力し、G2に単価を表示したいなら次の式です。

=XLOOKUP(1,(A2:A100=E2)*(B2:B100=F2),C2:C100,"該当なし")

最後の「該当なし」は、見つからなかった場合に表示する文字です。XLOOKUPには、見つからない場合に返す値を指定できる引数があります。これを入れておくと、#N/Aが並ぶよりも表が見やすくなります。

この式を使うときは、E2とF2に入力する値が元データと完全一致しているか確認してください。全角スペース、半角スペース、表記ゆれがあると一致しません。「株式会社ABC」と「ABC株式会社」は別物として扱われます。

月と担当者で売上を検索する

月次レポートでは、「月」と「担当者」で売上を取り出す場面も多いです。たとえば、A列に月、B列に担当者、C列に売上がある表で、指定した月と担当者の売上を返したい場合です。

=XLOOKUP(1,(A2:A100=E2)*(B2:B100=F2),C2:C100,"未入力")

ここでつまずきやすいのは、月の形式です。元データが日付形式なのに、検索セルが文字列の「2026年5月」になっていると一致しません。見た目が同じでも、Excel内部では別のデータとして扱われることがあります。

実務では、月を検索条件にする場合、元データ側に「対象月」列を作っておくと安定します。たとえば、日付から「2026/5/1」のように月初の日付へそろえる。検索側も同じ形式にする。これだけで、月条件のミスはかなり減ります。

XLOOKUPでOR条件を使うときは条件式を足し算する

XLOOKUPでOR条件を使うときは条件式を足し算する

OR条件は、「AまたはBに当てはまる行を探す」検索です。AND条件が掛け算なら、OR条件は足し算で考えます。

たとえば、「地域が東京または大阪の行を探す」とします。東京なら1、大阪なら1、それ以外なら0です。条件を足し算すると、東京または大阪の行が1以上になります。XLOOKUPで検索値を1にしてもよいですし、条件式全体を0より大きいかどうかで判定しても使えます。

OR条件は便利ですが、実務では少し注意が必要です。なぜなら、複数の行が条件に当てはまることが多いからです。XLOOKUPは基本的に最初に見つかった値を返します。複数件を全部出したい場合は、XLOOKUPよりFILTERのほうが向いています。

地域が東京または大阪の担当者を検索する

たとえば、A列に地域、B列に担当者名があるとします。東京または大阪に該当する最初の担当者を返したい場合は、次のように書けます。

=XLOOKUP(1,(A2:A100="東京")+(A2:A100="大阪"),B2:B100,"該当なし")

この式では、A列が東京なら1、大阪なら1、どちらでもなければ0になります。XLOOKUPは1を探して、該当する最初の行の担当者を返します。

ただし、東京と大阪の行が複数ある場合、返るのは最初の1件だけです。「東京または大阪の全員を一覧にしたい」という目的なら、この式では足りません。その場合はFILTER関数を使ったほうが自然です。

OR条件で複数件を返したいならFILTERを使う

上司から「東京か大阪の顧客だけ一覧で出して」と言われたとき、XLOOKUPで1件だけ返しても目的に合いません。ここで無理にXLOOKUPを使い続けると、数式が複雑になるだけです。

複数件を抽出したい場合は、FILTER関数を使います。FILTERは条件に合う行を絞り込んで返す関数です。Microsoft公式でも、FILTER関数は定義した条件に基づいてデータ範囲をフィルター処理すると説明されています。

=FILTER(A2:C100,(A2:A100="東京")+(A2:A100="大阪"),"該当なし")

この式なら、A列が東京または大阪の行をまとめて返せます。XLOOKUPは「1件を探す」、FILTERは「条件に合う複数件を取り出す」と覚えると迷いません。

XLOOKUPでANDとORを組み合わせる応用テクニック

XLOOKUPでANDとORを組み合わせる応用テクニック

実務では、ANDだけ、ORだけでは足りないことがあります。「担当者が田中で、地域が東京または大阪」「商品がAまたはBで、月が2026年5月」のように、複数条件の中にOR条件が混ざる場面です。

このときは、条件のかたまりを括弧で分けます。Excelでは計算の優先順位があるため、どの条件を先にまとめるかを明確にしないと、意図と違う結果になる可能性があります。Microsoft公式でも、Excelの計算演算子には優先順位があり、括弧で順序を変更できると説明されています。

少し難しそうに見えますが、考え方はシンプルです。ANDは掛け算、ORは足し算。そして、ORの部分を先に括弧で囲む。これだけです。

担当者が田中で地域が東京または大阪の売上を検索する

A列に担当者、B列に地域、C列に売上があるとします。「担当者が田中」かつ「地域が東京または大阪」の売上を返したい場合は、次の式です。

=XLOOKUP(1,(A2:A100="田中")*((B2:B100="東京")+(B2:B100="大阪")),C2:C100,"該当なし")

ここでは、地域のOR条件を先に括弧でまとめています。東京または大阪なら1以上になります。そこに担当者が田中かどうかを掛けることで、田中さんかつ東京または大阪の行だけが検索対象になります。

この式で注意したいのは、OR条件の足し算結果が2になる場合です。今回のように同じ列で「東京」と「大阪」を比較するなら、同時に両方になることはないので問題ありません。ただし、別列のOR条件では2になる可能性があります。その場合は、検索値を1にするより、条件式全体を0より大きい判定にするほうが安全です。

OR条件を0より大きい判定にして安定させる

別列の条件をORで組むときは、足し算の結果が2以上になる場合があります。たとえば、「商品がA」または「優先フラグがあり」のような条件です。1行が両方を満たすと、足し算結果は2になります。

このとき、XLOOKUPで1だけを探すと、2になった行を見逃す可能性があります。そこで、足し算結果が0より大きいかを判定します。

=XLOOKUP(TRUE,(A2:A100="田中")*(((B2:B100="東京")+(C2:C100="優先"))>0),D2:D100,"該当なし")

この式では、OR条件が1でも2でも、0より大きければTRUEになります。そこに担当者条件を掛け合わせることで、実務上の条件に近い検索ができます。

最初は読みにくいかもしれません。ですが、括弧の意味を分ければ見えてきます。「担当者条件」と「地域または優先条件」を分けて考えるだけです。

XLOOKUPで複数条件がうまくいかない原因

XLOOKUPで複数条件がうまくいかない原因

複数条件のXLOOKUPでエラーになると、数式全体が難しく見えて、どこを直せばいいかわからなくなります。特に#N/Aが出ると、「条件に合うデータがないのか」「式が間違っているのか」が判断しづらいです。

実務で多い原因は、範囲ズレ、表記ゆれ、日付形式の違い、余分なスペース、数値と文字列の混在です。関数そのものより、データ側の問題で止まっていることが多いんですよね。

ロロメディア編集部でも、広告媒体名の「Google」と「Google広告」が混在して、複数条件検索が返らなかったことがあります。数式を30分見ても原因がわからず、結局データ表記の問題でした。Excelで本当に怖いのは、関数ミスより入力ゆれです。

範囲の行数がズレていると正しく検索できない

複数条件では、すべての範囲の行数をそろえる必要があります。A2:A100とB2:B99のようにズレていると、意図した判定ができません。

操作前につまずきやすいのは、数式をコピーして一部だけ範囲を直し忘れることです。返す範囲だけC2:C101になっている、検索条件の一つだけB3:B100になっている。こういうズレは、見た目では気づきにくいです。

確認するときは、検索条件の範囲と戻り範囲を横に並べて見てください。開始行と終了行が同じかをチェックします。Excelテーブルを使っている場合は、構造化参照にすると範囲ズレを減らせます。

余分なスペースや表記ゆれで一致しない

XLOOKUPは、基本的に一致した値を探します。そのため、見た目が同じでも、余分なスペースが入っていると別の値として扱われます。

たとえば、「田中」と「田中 」は違います。末尾に半角スペースがあるだけで一致しません。顧客名や商品名をコピー貼り付けしている表では、このミスがかなり起きます。

対策としては、TRIM関数やCLEAN関数を使ってデータを整える方法があります。TRIMは余分なスペースを削る関数です。ただし、日本語の全角スペースまでは想定通りに処理できない場合があるため、表記ルールを先に統一するほうが安全です。

XLOOKUPで複数条件を使うときのエラー対策

XLOOKUPで複数条件を使うときのエラー対策

複数条件のXLOOKUPでは、エラー対策まで入れておくと実務で使いやすくなります。#N/Aが表示されると、表が壊れて見えますし、見た人が「何かミスがあるのでは」と不安になります。

XLOOKUPには「見つからない場合」の引数があります。そこに「該当なし」や空白を入れるだけでも、かなり見やすくなります。さらに、複雑な式ではIFERRORを使う場面もあります。IFERRORは、数式がエラーになった場合に指定した値を返す関数です。

ただし、エラーを隠しすぎるのも危険です。本当はデータが間違っているのに、空白にしてしまうと気づけません。提出用の表では空白でもよいですが、作業中は「該当なし」と表示したほうが確認しやすいです。

見つからない場合はXLOOKUPの第4引数を使う

XLOOKUPでは、4つ目の引数に見つからない場合の表示を指定できます。複数条件でも同じです。

=XLOOKUP(1,(A2:A100=E2)*(B2:B100=F2),C2:C100,"該当なし")

このように書くと、条件に合う行がない場合に「該当なし」と表示されます。#N/Aのままにするより、表を見る人に伝わりやすくなります。

実務では、「該当なし」「未登録」「確認中」など、状況に合わせて表示を変えると便利です。たとえばマスタに未登録の可能性があるなら「マスタ未登録」と出す。すると、次にやるべき行動が見えます。

IFERRORで全部まとめて処理するのは最後の手段にする

IFERRORを使えば、どんなエラーでも指定した表示にできます。たとえば次のような式です。

=IFERROR(XLOOKUP(1,(A2:A100=E2)*(B2:B100=F2),C2:C100),"確認してください")

便利ですが、最初からIFERRORで包むと、原因が見えにくくなります。#N/Aなのか、#VALUE!なのか、範囲ズレなのかがわからなくなるからです。

おすすめは、作成中はIFERRORを使わずにエラー内容を見ることです。式が安定してから、提出用にIFERRORや第4引数を入れる。この順番にすると、ミスを隠さずに済みます。

XLOOKUPとFILTERは目的で使い分ける

XLOOKUPとFILTERは目的で使い分ける

XLOOKUPで複数条件を扱えるようになると、なんでもXLOOKUPでやりたくなります。でも、実務ではFILTERのほうが向いている場面もあります。

XLOOKUPは、条件に合う1件を返すのが得意です。一方、FILTERは条件に合う複数行をまとめて返すのが得意です。どちらが上という話ではなく、用途が違います。

たとえば、請求書番号から顧客名を返すならXLOOKUP。東京支店の売上一覧を全部出したいならFILTER。この切り分けをすると、数式がシンプルになります。

1件だけ返したいならXLOOKUP

XLOOKUPが向いているのは、検索結果が1件に決まる場面です。顧客コード、商品コード、社員番号、案件IDのように、条件を組み合わせると1行に絞れるデータです。

たとえば、社員番号と対象月で交通費を返すならXLOOKUPが向いています。1人1月に1件のデータがある前提なら、検索結果が1件になるからです。

この前提が崩れると危険です。同じ社員番号と月で複数行ある場合、XLOOKUPは最初の1件しか返しません。複数件の合計が必要ならSUMIFS、一覧が必要ならFILTERを使うべきです。

複数件を一覧で出したいならFILTER

FILTERが向いているのは、条件に合う行を全部見たい場面です。たとえば「担当者が田中の案件一覧」「地域が東京または大阪の売上一覧」「未対応ステータスの問い合わせ一覧」などです。

=FILTER(A2:D100,(B2:B100="田中")*(D2:D100="未対応"),"該当なし")

この式なら、B列が田中、D列が未対応の行をまとめて返せます。XLOOKUPで最初の1件だけ返すより、目的に合っています。

Excelの関数は、難しい式を書けることより、目的に合う関数を選べることのほうが大切です。無理に1つの関数で全部やろうとしないほうが、結果的にミスが減ります。

XLOOKUPで複数条件を見やすく管理するコツ

XLOOKUPで複数条件を見やすく管理するコツ

複数条件のXLOOKUPは便利ですが、数式が長くなりやすいです。長い式は、作った本人しか読めなくなります。数週間後の自分が見ても、何をしているかわからないことがあります。

業務で使うExcelは、自分だけのメモではありません。上司、同僚、経理、クライアントに共有することもあります。だから、数式の見やすさも実務スキルの一部です。

ロロメディア編集部でも、レポート自動化のシートは、あとで別担当者が触る前提で作ります。数式が少し長くなる場合は、条件セルを分けたり、補助列を作ったりして、読みやすさを優先します。

検索条件をセルに分ける

数式の中に直接「田中」「東京」「ノート」と書くと、条件を変えるたびに数式を編集する必要があります。これはミスの原因になります。

おすすめは、検索条件を別セルに置くことです。たとえばE2に担当者、F2に商品名を入力し、G2に検索結果を出します。

=XLOOKUP(1,(A2:A100=E2)*(B2:B100=F2),C2:C100,"該当なし")

この形なら、E2やF2を変えるだけで検索結果が変わります。レポートや確認用シートでは、このほうが圧倒的に使いやすいです。

複雑すぎるなら補助列を使う

作業列なしで複数条件検索できるのがXLOOKUPの魅力ですが、複雑すぎる場合は補助列を使って構いません。補助列とは、検索用のキーを作るための作業列です。

たとえば、A列の顧客名とB列の商品名を結合してD列に検索キーを作ります。

=A2&"|"&B2

そのうえで、検索側も同じ形にしてXLOOKUPします。

=XLOOKUP(E2&"|"&F2,D2:D100,C2:C100,"該当なし")

この方法は少し古典的ですが、他の人が見ても理解しやすいです。数式を短くしたい、共有先のExcelスキルに差がある、エラー原因を追いやすくしたい。そういう場面では、補助列はむしろ実務的です。

XLOOKUPで複数条件を使うときの実務チェックリスト

XLOOKUPで複数条件を使うときの実務チェックリスト

複数条件のXLOOKUPは、数式を入れて終わりではありません。結果が本当に合っているか確認する必要があります。

特に売上、請求、広告費、在庫、給与に関わる表では、1つの検索ミスが大きなズレにつながります。提出直前に気づくと、表全体を見直すことになり、かなり焦ります。

数式を入れたあと、最低限次の確認をしてください。

  • 検索条件の範囲と戻り範囲の行数がそろっているか
  • 検索条件に表記ゆれがないか
  • 日付や数値が文字列になっていないか
  • 重複データがないか
  • 最初の1件だけ返って問題ないか
  • 該当なしの表示が適切か

この確認は、面倒でも最初にやったほうが早いです。後から間違いに気づくと、数式だけでなく提出済み資料の信頼まで落ちます。

重複データがある場合はXLOOKUPだけで判断しない

XLOOKUPは条件に合う最初の値を返します。つまり、同じ条件に合う行が複数あっても、全部は教えてくれません。

ここが実務でかなり危ないです。たとえば「顧客名」と「商品名」で検索しているつもりでも、同じ顧客が同じ商品を複数回買っていたら、最初の1件だけ返ります。合計金額が必要なのに、単発の金額だけ出てしまうかもしれません。

重複がありそうなデータでは、COUNTIFSで件数を確認すると安全です。

=COUNTIFS(A2:A100,E2,B2:B100,F2)

この結果が1ならXLOOKUPで返して問題ありません。2以上なら、XLOOKUPではなくSUMIFSやFILTERを検討してください。

合計が欲しいならSUMIFSを使う

複数条件で「該当する金額の合計」を出したい場合、XLOOKUPではなくSUMIFSを使います。SUMIFSは複数条件で合計する関数です。

たとえば、担当者が田中、商品がノートの売上合計を出すなら次の式です。

=SUMIFS(C2:C100,A2:A100,E2,B2:B100,F2)

XLOOKUPは検索、SUMIFSは集計です。ここを混同すると、レポートの数字がズレます。特に売上表では、「1件を探す」のか「合計を出す」のかを先に決めてください。

XLOOKUPの複数条件でよくある質問

XLOOKUPの複数条件でよくある質問

ここでは、実務で聞かれやすい疑問をまとめます。関数の話は細かく見えますが、現場で困るポイントはだいたい決まっています。

急いでいるときほど、「この式でいいのか」「なぜ返らないのか」「他の関数を使うべきか」で迷いますよね。質問ごとに判断基準を持っておくと、作業が止まりにくくなります。

XLOOKUPで複数条件は正式な使い方なのか

XLOOKUPの基本構文は、検索値、検索範囲、戻り範囲を指定する形です。複数条件用の専用引数があるわけではありません。

ただし、検索範囲に条件式の配列を指定することで、複数条件検索ができます。これはExcelの配列計算を活用した使い方です。Microsoft公式でも、配列数式は1つ以上の項目に対して複数の計算を実行できるものとして説明されています。

つまり、「XLOOKUPに複数条件専用機能がある」というより、「条件式で検索範囲を作っている」と理解するのが正確です。

XLOOKUPが使えないExcelではどうすればいいか

XLOOKUPは比較的新しいExcel環境で使える関数です。古いExcelでは使えない場合があります。Microsoft公式のXLOOKUPページでも、利用できるExcelのバージョンが案内されています。

使えない環境では、INDEXとMATCH、またはVLOOKUP用の補助列を使う方法があります。共有相手が古いExcelを使っている場合は、XLOOKUPを使ったファイルを渡すとエラーになる可能性があります。

社内で共有する表なら、相手のExcel環境を確認してください。自分のPCでは動いても、相手のPCで動かなければ業務では使いにくいです。

Googleスプレッドシートでも同じように使えるか

GoogleスプレッドシートにもXLOOKUPが使える環境があります。ただし、Excelと完全に同じ挙動とは限らないため、共有前に確認が必要です。

特に配列の扱い、エラー表示、関数の区切り文字、ロケール設定によって動きが変わる場合があります。Excelではカンマ区切りでも、環境によってはセミコロンが必要になることもあります。

実務では、Excelで納品するならExcelで確認、Googleスプレッドシートで運用するならスプレッドシート上で確認する。これが安全です。関数は似ていても、動作確認は別物として考えましょう。

まとめ

まとめ

XLOOKUPで複数条件を指定する基本は、条件式を使って検索用の配列を作ることです。AND条件は掛け算、OR条件は足し算で考えます。

担当者と商品名の両方に一致する金額を返したいなら、次の形が基本です。

=XLOOKUP(1,(A2:A100=E2)*(B2:B100=F2),C2:C100,"該当なし")

東京または大阪のようなOR条件なら、次の形になります。

=XLOOKUP(1,(A2:A100="東京")+(A2:A100="大阪"),B2:B100,"該当なし")

ANDとORを組み合わせる場合は、括弧で条件のかたまりを分けてください。計算の優先順位を曖昧にすると、意図しない結果になることがあります。

ただし、XLOOKUPは基本的に1件を返す関数です。複数件を一覧で出したいならFILTER、合計したいならSUMIFS、重複件数を確認したいならCOUNTIFSを使います。関数選びを間違えないことが、実務では一番大事です。

それでも、いや、だからこそ、XLOOKUPの複数条件は覚える価値があります。作業列を増やさずに検索できるようになると、管理表の作り方がかなり変わります。最初は少し難しく見えますが、「ANDは掛け算、ORは足し算」と覚えて、まずは小さな表で試してみてください。Excelは、手を動かした瞬間にわかることが多いです。

参考記事

今週のベストバイ

おすすめ一覧

資料ダウンロード

弊社のサービスについて詳しく知りたい方はこちらより
サービスご紹介資料をダウンロードしてください