ExcelでXLOOKUP関数の複数条件検索を行う方法

Excelで複数条件に一致する値を検索したいときは、XLOOKUP関数に「条件の一致判定」を組み合わせるのが分かりやすい方法です。

最初に結論を書くと、よく使う形は次の2つです。

  • 1件だけ取り出したい: =XLOOKUP(1,(条件1範囲=条件1)*(条件2範囲=条件2),戻り範囲)
  • 一致したものをすべて取り出したい: FILTER関数を使う

この記事では、XLOOKUP関数で複数条件検索を行う基本形、3条件以上に増やす方法、うまくいかないときの確認ポイントまでまとめて解説します。

前提: XLOOKUP関数は主に Microsoft 365 と Excel 2021 以降で使えます。古いバージョンでは、後半のFAQにあるように INDEX / MATCH や補助列を使う方法を検討してください。

基本の考え方

XLOOKUP関数は本来、1つの検索値を使って1つの検索範囲から一致する位置を探す関数です。複数条件で使うときは、各条件が一致した行だけ 1 になる配列を作り、それを検索対象にします。

たとえば「商品名が A で、月が 4月 の行から売上を取り出したい」なら、次のように考えます。

  • (A列=商品名) で TRUE / FALSE の配列を作る
  • (B列=月) で TRUE / FALSE の配列を作る
  • それらを掛け算して、両方 TRUE の行だけ 1 にする
  • XLOOKUPで 1 を探す

TRUE は 1、FALSE は 0 として扱われるため、この方法で複数条件検索ができます。

2条件で検索する基本形

例として、A列に商品名、B列に月、C列に売上が入っている表から、H2 の商品名と H3 の月に一致する売上を返す場合の式は次の通りです。

=XLOOKUP(1,(A2:A20=H2)*(B2:B20=H3),C2:C20)

この式では、A列とB列の両方が一致した行だけ 1 になるので、XLOOKUP がその行の C列の値を返します。

下のスクリーンショットでは、元データの表と検索条件セル、そして複数条件の XLOOKUP 式を入力した結果を確認できます。

XLOOKUPの複数条件検索で使うサンプル表と検索条件セル
サンプル表と検索条件セルの配置例
XLOOKUPで商品名と月の2条件に一致する売上を返した結果
複数条件の XLOOKUP 式と検索結果

3条件以上に増やす方法

条件が3つ以上でも考え方は同じです。掛け算する条件を増やします。

=XLOOKUP(1,(A2:A20=H2)*(B2:B20=H3)*(D2:D20=H4),C2:C20)

たとえば、商品名・月・担当者の3条件で売上を取り出すような場合に使えます。

一致するものが複数ある場合はどうするか

XLOOKUP関数は、基本的には最初に見つかった1件を返します。そのため、同じ条件に一致する行が複数ある場合は、XLOOKUPではなく FILTER関数の方が向いています。

=FILTER(C2:C20,(A2:A20=H2)*(B2:B20=H3))

一致する売上をすべて一覧で取り出したいなら、この形を使ってください。

よくある失敗

症状原因確認ポイント
#N/A になる条件に一致する行がない検索条件の文字列・空白・全角半角を確認する
違う行が返る一致行が複数あり、先頭の1件が返っているFILTER関数に切り替える
数式がうまく動かない検索範囲と戻り範囲の行数がずれているすべて同じ行数・同じ開始位置にそろえる
0 や FALSE が混ざる条件式の書き方が崩れている各条件を丸かっこで囲む

#N/A が出るときは、まず検索条件セルの値と元データの値を見比べて、余分な空白、全角半角の違い、日付や数値の表示形式の差がないかを確認してください。一致行が複数あるケースでは、XLOOKUP は先頭の1件だけ返す点にも注意が必要です。

補助列を使う方法との違い

複数条件検索では、補助列に 商品名&月 のような結合キーを作って検索する方法もあります。

  • 補助列を使う方法: 分かりやすいが、表の構造を変える必要がある
  • XLOOKUP + 条件式: 補助列なしで書けるが、式は少し長くなる

既存の表をあまり触りたくないときは、今回の方法の方が向いています。

FAQ

XLOOKUPで複数条件を縦横どちらにも使えますか?

考え方は同じです。行方向でも列方向でも、条件が一致した位置だけ 1 になる配列を作れれば使えます。

古いExcelでも使えますか?

XLOOKUP関数は新しいExcelで使える関数です。古いバージョンでは INDEX / MATCH や補助列を使う方法を検討してください。

まとめ

  • XLOOKUP関数でも複数条件検索はできる
  • 基本形は XLOOKUP(1,(条件1)*(条件2),戻り範囲)
  • 一致が複数あるなら FILTER関数が向いている
  • 行数のずれ、空白、全角半角の違いをまず確認する

XLOOKUP関数そのものの基本は、XLOOKUP関数の詳細解説(Excel) も参考になります。複数一致を一覧で返したい場合は、FILTER関数と複数条件設定【AND条件とOR条件の併用とまとめ】 もあわせて確認してください。

コメント