残業を減らす!Officeテクニック
XLOOKUP関数で複数条件の「いずれか」に合致する値を取り出せるようにする方法とは?
2025年2月3日 06:55
表から特定のデータを探して対応する値を取り出す時の関数と言えば、XLOOKUP / VLOOKUP関数ですよね。しかし、これらの関数は万能ではなく、例えば条件に一致する値が複数ある場合、それらをすべて取得することはできません。FILTER関数などを活用するテクニックが便利です。
反対に結果が複数ではなく、「AまたはB」といった複数の条件に一致する最初の値を取り出したいこともあるはずです。
以下は人気順に並べた商品の一覧です。各カテゴリーにおける一番人気の商品は、XLOOKUP / VLOOKUP関数で取り出せますが、カテゴリーコードが「BLND」または「NATP」の中から一番人気を探すとなると困りますよね。
フィルターで絞り込んで並べ替える手もありますが、目視での確認では効率も悪く、見間違える可能性もありますよね。今回は、XLOOKUP関数の引数[一致モード]を活用して、複数の条件を探す時のひと工夫を紹介したいと思います。ただし、商品コードなどの半角英数字を条件とする場合限定です。
引数[一致モード]の正規表現を利用する
XLOOKUP関数の引数[一致モード]を確認しておきましょう。普段は省略して「0:完全一致」で検索することが多いですが、「3」と指定することで、引数[検索値]に正規表現を利用できるようになります。
例えば「BLND」または「NATP」という条件を正規表現で記述すると「BLND|NATP」となります。指定する条件を「|」で区切ります。先ほどの数式を修正する場合は検索値の部分を「"」で囲みます。
TEXTJOIN関数で正規表現を作成する
しかし、数式中に条件式を直接入力するのはスマートではありませんね。TEXTJOIN関数を使って、正規表現の式を作成してみましょう。TEXTJOIN関数の構文は以下の通りです。
指定する条件が入力されているセル範囲を「|」で区切って連結するので、「=TEXTJOIN("|",TRUE,E2:E3)」のようになります。「TRUE」は省略しても構いませんが、「,」は必須です。
「または」の条件として、XLOOKUP関数で利用する
あとはTEXTJOIN関数の結果をXLOOKUP関数で利用するだけです。以下は、XLOOKUP関数の数式にTEXTJOIN関数の数式を組み込んでいますが、TEXTJOIN関数が入力されたセルを参照しても構いません。
なお、「^(BLND|NATP)$」のような正規表現を使うと、完全一致となります。例えば、枝番を含むコードを除いて検索する時に活用してください。TEXTJOIN関数では「"^(" &TEXTJOIN("|",TRUE,E2:E3) & ")$"」と記述できます。