XLOOKUPで複数条件検索する方法|できない原因と1件だけ取得する解決法

XLOOKUP関数で複数条件を扱う方法|FILTER・INDEXとの違いもわかりやすく解説

本記事には広告(PR)が含まれます。
くわしくは プライバシーポリシー をご確認ください。


XLOOKUP関数は、従来のVLOOKUPに代わる検索関数として注目されており、柔軟な設定や読みやすい構文が魅力です。
基本的な使い方を覚えれば、「左右どちらにも検索できる」「エラー時の処理が簡単」など、多くの場面で活用できます。

しかし実務では、「複数の条件でデータを検索したい」という場面で、
「XLOOKUPは複数条件に対応していないの?」「思った通りに動かない…」とつまずくことも少なくありません。

この記事では、XLOOKUP関数で複数条件を指定して1件だけ正確に取得する方法を中心に、
うまくいかない原因や注意点を初心者向けにわかりやすく解説します。

複数条件検索を正しく理解して、実務で迷わず使えるようになりたい方は、ぜひ参考にしてみてください。


▼やりたいことから探す

  • ・複数条件で1件だけ検索したい
    → 本記事で解説
  • ・複数の結果をまとめて取得したい
    FILTER関数の記事
  • ・エラーや見つからない原因を知りたい
    エラー対策記事
  • ・処理が重い・遅いときの対処法を知りたい
    高速化記事

XLOOKUPで複数条件を指定する方法

「&演算子」で複数条件を結合して使う方法

このような場合には、複数の条件を文字列として結合し、1つの検索キーにすることでXLOOKUPに対応させる方法がよく使われます。

▼構文例:

=XLOOKUP(A2&B2,E2:E11&F2:F11,G2:G11)

このように、検索値と検索列の両方を「&(アンパサンド)」で結合することで、
「部署+氏名」や「商品コード+日付」など、複数の条件を1つの文字列として扱うことができます。

XLOOKUP関数で複数条件例

▼活用シーンの例:

  • 部署ごとの社員一覧から、氏名と部署を指定して該当者のIDを取得

  • 商品+出荷日の組み合わせで、在庫や価格を取得

このように、複数の要素を“ひとつのキー”に変換するという考え方を覚えると、XLOOKUPの応用力が一気に広がります。


実例: 商品×日付で単価を取得する

実務では「同じ商品でも出荷日によって単価が異なる」といったケースがあります。
このようなとき、商品名と出荷日の2つの条件で単価を検索できると便利です。

▼使用例:

商品名 出荷日 単価
りんご 2024/5/1 120円
りんご 2024/5/2 130円
みかん 2024/5/1 100円
=XLOOKUP(E2&F2,A2:A5&B2:B5,C2:C5)

※E2:商品名、F2:出荷日
※A列:商品名、B列:出荷日、C列:単価

XLOOKUP複数条件_活用例1果物在庫

ポイント:

  • 出荷日が「日付形式(シリアル値)」として正しく扱われていれば、TEXT関数を使わなくても一致します。
    ただし、検索値と検索対象の型(数値 or 文字列)が一致していない場合はエラーになるため、事前に「日付形式」でそろっているかを確認しましょう。

たとえば、検索値側が =TEXT(F2,”yyyy/mm/dd”) のように文字列化されていると、 B列が日付のままでは一致しません(= #N/A エラーになる)。
日付の表示形式違い(比較)
  • 不安な場合は、検索対象もTEXT関数で文字列化することで型をそろえることができます:

=XLOOKUP(E2&TEXT(F2,"yyyy/m/d"),A2:A5&TEXT(B2:B5,"yyyy/mm/dd"), C2:C5)

XLOOKUP関数複数条件_日付文字列化


結合列を事前に作成して処理を軽くするコツ

検索列や検索値を数式内で結合していると、関数が長くなり可読性も下がります。
また、大量データでは処理が重くなる原因にもなります。

そこでおすすめなのが、あらかじめ「検索キー列」を追加しておく方法です。

▼事前に作成する例:

商品名 出荷日 検索キー
りんご 2024/5/1 りんご2024/5/1
りんご 2024/5/2 りんご2024/5/2

そのうえで、以下のように検索します:

=XLOOKUP(検索値1&検索値2, 検索キー列, 戻り値範囲)

こうしておくと、XLOOKUP側は非常にシンプルになり、保守・再利用性も高まります。

検索用結合列を作成して複数検索をする例

結合列(C列)の結合例:

=A2&TEXT(B2,"YYYY/M/D")

検索例:

=XLOOKUP(F2&TEXT(G2,"YYYY/M/D"),C2:C5,D2:D5)

※上の図では出荷日についてはTEXT関数を利用して文字列化しています。TEXT関数を利用する場合は、検索値と検索範囲の表示形式を合わせるように意識しましょう。


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

XLOOKUP関数は、指定した検索値に一致するデータを返す関数です。

ただし「検索値1つに対して検索列も1つ」という構造のため、
複数条件をそのまま指定することはできません。

たとえば、「部署が営業部かつ社員名が田中さん」のようなAND条件での検索は、
そのままXLOOKUPに渡しても動作せず、構文エラーや一致しない結果になるケースが多いです。


複数条件を使うときの注意点

データ結合時の注意点とエラー例

検索値と検索列を結合する際は、次のような点に注意する必要があります。

① 空白や全角・半角の違い

たとえば、「山田太郎」と「山田 太郎」(←スペース入り)は別の文字列として扱われ、
検索がうまく機能しないことがあります。

スペースによる表記ゆれ

→ 対策:SUBSTITUTE関数で余分な空白を削除する、全角→半角の統一など

表記ゆれスペース対策

関数による文字整形例
  • SUBSTITUTE関数:文字対象の文字を置換
    • 使用例:
       =SUBSTITUTE(SUBSTITUTE(セル, " ", ""), " ", "")

    • 処理内容:全角スペース・半角スペースをすべて削除

    • 整形前:山田_太郎(全角スペース)

    • 整形後:山田太郎


  • SUBSTITUTE関数+ASC関数:全角→半角にしてから置換
    • 使用例:
       =SUBSTITUTE(ASC(セル), " ", "")

    • 処理内容:全角文字を半角化+半角スペース削除

    • 整形前:山田_太郎(全角スペース)

    • 整形後:山田太郎


  • ASC関数:全角文字を半角文字に変換
    • 使用例:
       =ASC(セル)

    • 処理内容:全角スペース → 半角スペースへ

    • 整形前:山田_太郎(全角スペース)

    • 整形後:山田_太郎


  • TRIM関数:半角スペースを整える
    • 使用例:
       =TRIM(セル)

    • 処理内容:連続した半角スペースを1つに整形

    • 整形前:山田____太郎(スペースが複数)

    • 整形後:山田 太郎

②数値・日付を検索条件に含めるときの注意点

複数条件に日付や数値を含める場合は、検索値と検索範囲で「値の形式(データ型)」が一致しているかを確認することが重要です。

Excelでは、日付は内部的には「シリアル値(連番の数値)」として管理されています。
そのため、検索値の方を TEXT(G2, "yyyy/m/d") のように文字列に変換すると、検索対象がシリアル値のままでは一致しないことがあり、#N/A エラーになるケースも少なくありません。

日付が絡む検索比較(日付のままOR文字列)

対処法の例:
方法 説明
検索値を変換しない(そのまま使う) =XLOOKUP(氏名&G2, 結合済み検索列, 戻り値列) のように、日付をそのままシリアル値で検索するのが最も確実
検索対象もTEXT関数で文字列にする 両者を TEXT(..., "yyyy/m/d") でそろえれば一致するが、表示形式の違いに注意が必要

補足:目に見える表示と内部の「値」は違う

セルに表示されている日付が「2018/4/1」となっていても、内部的には「43210」のような数値として保持されています。
この「見た目」と「中身」のズレが原因で一致しないことがあるため、特にTEXT関数を使うときは、検索対象と検索値の型を揃えることを意識しましょう。

③ 関数が長くなりすぎるときはIFERRORでエラー処理を追加

=IFERROR(XLOOKUP(...), "該当なし")

事前にデータを整えておくことで、XLOOKUPの複数条件も安定して使えるようになります。

IFERROR関数でのエラー回避例


複数条件での検索は、「条件を1つのキーにまとめる」という考え方がポイントです。
ここまでが「複数条件で1件取得する方法」です。
次に、複数ヒットした場合の対処方法を確認していきます。


複数該当する場合の対処法

XLOOKUPは、条件に一致した最初の1件のみを返す関数です。
そのため、同じ条件に一致するデータが複数ある場合は、すべての結果を取得することはできません。

複数の結果を一覧で取得したい場合は、FILTER関数の使用がおすすめです。

▶条件に合うデータをすべて抽出したい場合はこちら

Excel FILTER関数の使い方まとめ|複数条件・別シート・使えない時の対処法も解説!【事務作業がグッと楽に】


他関数との使い分け

複数条件での検索では、XLOOKUPだけでなくINDEX+MATCHの組み合わせが使われることもあります。

INDEX+MATCHは、複数条件を直接指定できる柔軟さがあり、旧バージョンのExcelでも使える点が特徴です。

一方で、XLOOKUPは構文がシンプルで読みやすく、初心者でも扱いやすいというメリットがあります。

「どの関数を使えばいいか迷った場合」は、この使い分けを基準にすると判断しやすくなります。

▼使い分けの目安

・シンプルに1件取得したい → XLOOKUP
・複数条件を直接指定したい → INDEX+MATCH

詳しい使い方や違いについては、以下の記事で解説しています。

XLOOKUP・FILTER・INDEX+MATCHの違いと使い分けを実例付きで徹底解説


※おすすめの動画講座 (PR)

XLOOKUPやINDEX-MATCHの違いを理解できると、
実務での使い分けがぐっと楽になります。

応用力を身につけたい方は、
関数演習形式で学べる講座を確認してみるのもおすすめです。


まとめ|XLOOKUP関数で複数条件をスマートに扱おう

XLOOKUP関数は、通常1条件での検索に特化した関数ですが、
&演算子を使って検索値を結合することで、2つ以上の条件にも対応できます。

ただし、日付やスペースを含む文字列など、型や整形の違いによる不一致には注意が必要です。
また、複数条件においては、FILTER関数やINDEX+MATCHの方が適している場合もあります。

必要に応じて、関数ごとの得意分野を使い分けることで、より柔軟なデータ検索が可能になります。


よくある質問(FAQ)

XLOOKUPは複数条件に対応していますか?

直接複数条件を指定することはできませんが、「&(アンパサンド)」で条件を結合することで対応可能です。

複数の検索結果をすべて表示したい場合はどうすればいいですか?

XLOOKUPでは1件しか返せないため、FILTER関数を使用するのがおすすめです。


複数条件でうまく検索できない原因は?

データ型(数値・文字列・日付)の不一致や、スペースの違いが原因になることが多いです。

INDEX+MATCHとの違いは?

INDEX+MATCHは複数条件を直接扱える柔軟さがありますが、構文が複雑です。
XLOOKUPはシンプルですが、複数条件は工夫が必要です。

【関連記事】

※外部リンク※

※参考書籍※

※本ボックスにはアフィリエイトリンク(PR)が含まれます。
くわしくは プライバシーポリシー へ。

XLOOKUP関数で複数条件を扱う方法|FILTER・INDEXとの違いもわかりやすく解説
最新情報をチェックしよう!