shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】XLOOKUPで検索値のいずれかに”一致”する最初の結果を抽出する方法

Microsoft365のExcelにあるXLOOKUP関数で、検索値の[一致モード]に「正規表現に一致する」というオプションが追加されました。

【Excel】XLOOKUPで検索値のいずれかを含む最初の結果を抽出する方法では、「いずれかを含む」という条件の設定例でした。

今回は、XLOOKUPで「いずれかと完全に一致する」の方法です。

内容:

動作確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2411)です。

事例の前提

説明する事例は、以下で紹介した数式の修正です。shikumika.org

この事例では、検索値の「abcd」か「1234」のいずれかを含む条件で次の数式でした。

=XLOOKUP("abcd|1234",B:B,C:C,,3,1)

赤字部分が正規表現で「”abcd” もしくは ”1234” 」を表現していました。

この場合、検索範囲から検索値を含む値が検索されていました。

XLOOKUPで「いずれかと完全に一致する」の数式

上記の数式を「いずれかと完全に一致する」で検索する条件としたい場合は、次のように修正します。

=XLOOKUP("^(abcd|1234)$",B:B,C:C,,3,1)

赤字部分は、正規表現で次のとおりです。

  • 「^」(キャレット)は、文字列の先頭を示します。
  • (abcd|1234)は、abcd または 1234 のどちらかに一致することを示します。
  • 「$」(ドル)は、文字列の末尾を示します。

TEXTJOIN関数をあわせた活用例

検索したい正規表現を都度作成するには慣れが必要なのでTEXTJOIN関数を利用すると便利です。

以下は、E列に検索キーワードを複数指定できる欄を設け、XLOOKUPで検索(完全一致)する事例です。

正規表現にキャレットとドルを使用して表現している

複数の検索キーワードのいずれかと一致する結果を抽出する数式

この事例では、冒頭のアウトプットイメージで示した数式の正規表現部分について、TEXTJOIN関数を使用してセルの値で都度変更できるようにしています。

=XLOOKUP("^("&TEXTJOIN("|",TRUE,E3:E5)&")$",B:B,C:C,,3,1)

上図のとおり、「abcd」か「1234」の完全一致を検索し、最初に一致した7行目の結果”●●”を抽出できています。

以上、ExcelのXLOOKUPで検索値のいずれかに”一致”する最初の結果を抽出する方法でした。

正規表現を利用すれば、Excelでシンプルに実現できることが増加します。

shikumika.org