「XLOOKUP関数」は、従来のVLOOKUPに代わる新しい検索関数として注目されており、柔軟な設定や読みやすい構文が魅力です。
実際に、基本的な使い方を覚えれば「左右どちらにも検索できる」「エラー時の処理が簡単」など、多くの場面で役立ちます。
しかし、実務でよくある「複数の条件でデータを検索したい」という場面では、
「XLOOKUPって複数条件に対応していないの?」「思った通りに動いてくれない……」とつまずいてしまうことも少なくありません。
本記事では、XLOOKUP関数で複数条件を扱う方法や注意点、FILTER関数やINDEX+MATCHとの違いまで、
中級者の方が実務で活用するために知っておきたい応用テクニックをわかりやすく解説します。
複数条件をスマートに処理して、関数の力をもっと活かしてみたい方は、ぜひ参考にしてみてください!
XLOOKUP関数で複数条件を扱う基本と仕組み
XLOOKUPは本来「1条件」での検索に特化した関数
XLOOKUP関数は、指定した検索値に一致するデータを探し、対応する値を返す関数です。
構文もシンプルで、検索範囲・戻り値範囲をそれぞれ指定するだけで済むため、非常に扱いやすい関数といえます。
ただし、XLOOKUPは**「検索値1つに対して検索列も1つ」**という基本構造になっているため、
複数の条件を直接渡すことができないという制限があります。
たとえば、「部署が営業部かつ社員名が田中さん」のようなAND条件での検索は、
そのままXLOOKUPに渡しても動作せず、構文エラーや一致しない結果になるケースが多いです。
「&演算子」で複数条件を結合して使う方法
このような場合には、複数の条件を文字列として結合し、1つの検索キーにすることでXLOOKUPに対応させる方法がよく使われます。
▼構文例:
このように、検索値と検索列の両方を「&(アンパサンド)」で結合することで、
「部署+氏名」や「商品コード+日付」など、複数の条件を1つの文字列として扱うことができます。
▼活用シーンの例:
-
部署ごとの社員一覧から、氏名と部署を指定して該当者のIDを取得
-
商品+出荷日の組み合わせで、在庫や価格を取得
このように、複数の要素を“ひとつのキー”に変換するという考え方を覚えると、XLOOKUPの応用力が一気に広がります。
データ結合時の注意点とエラー例
検索値と検索列を結合する際は、次のような点に注意する必要があります。
① 空白や全角・半角の違い
たとえば、「山田太郎」と「山田 太郎」(←スペース入り)は別の文字列として扱われ、
検索がうまく機能しないことがあります。
→ 対策:SUBSTITUTE関数で余分な空白を削除する、全角→半角の統一など
-
関数による文字整形例
-
- SUBSTITUTE関数:文字対象の文字を置換
-
使用例:
=SUBSTITUTE(SUBSTITUTE(セル, " ", ""), " ", "")
-
処理内容:全角スペース・半角スペースをすべて削除
-
整形前:
山田_太郎(全角スペース)
-
整形後:
山田太郎
-
- ✅SUBSTITUTE関数+ASC関数:全角→半角にしてから置換
-
使用例:
=SUBSTITUTE(ASC(セル), " ", "")
-
処理内容:全角文字を半角化+半角スペース削除
-
整形前:
山田_太郎(全角スペース)
-
整形後:
山田太郎
-
- ASC関数:全角文字を半角文字に変換
-
使用例:
=ASC(セル)
-
処理内容:全角スペース → 半角スペースへ
-
整形前:
山田_太郎(全角スペース)
-
整形後:
山田_太郎
-
- TRIM関数:半角スペースを整える
-
使用例:
=TRIM(セル)
-
処理内容:連続した半角スペースを1つに整形
-
整形前:
山田____太郎(スペースが複数)
-
整形後:
山田 太郎
-
- SUBSTITUTE関数:文字対象の文字を置換
②数値・日付を検索条件に含めるときの注意点
複数条件に日付や数値を含める場合は、検索値と検索範囲で「値の形式(データ型)」が一致しているかを確認することが重要です。
Excelでは、日付は内部的には「シリアル値(連番の数値)」として管理されています。
そのため、検索値の方を TEXT(G2, "yyyy/m/d")
のように文字列に変換すると、検索対象がシリアル値のままでは一致しないことがあり、#N/A
エラーになるケースも少なくありません。
✅ 対処法の例:
方法 | 説明 |
---|---|
検索値を変換しない(そのまま使う) | =XLOOKUP(氏名&G2, 結合済み検索列, 戻り値列) のように、日付をそのままシリアル値で検索するのが最も確実 |
検索対象もTEXT関数で文字列にする | 両者を TEXT(..., "yyyy/m/d") でそろえれば一致するが、表示形式の違いに注意が必要 |
補足:目に見える表示と内部の「値」は違う
セルに表示されている日付が「2018/4/1」となっていても、内部的には「43210」のような数値として保持されています。
この「見た目」と「中身」のズレが原因で一致しないことがあるため、特にTEXT関数を使うときは、検索対象と検索値の型を揃えることを意識しましょう。
③ 関数が長くなりすぎるときはIFERRORでエラー処理を追加
=IFERROR(XLOOKUP(...), "該当なし")
事前にデータを整えておくことで、XLOOKUPの複数条件も安定して使えるようになります。
次章では、これらの仕組みを踏まえて、実際の業務で役立つ複数条件の応用テクニックを紹介していきます。