コンテンツにスキップ

XLOOKUP

種類: MS Excel 互換関数 · ネイティブ導入: Excel 2021

範囲または配列から一致を検索し、2 番目の範囲または配列から対応する項目を返します。

構文

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない時], [一致モード], [検索モード])

引数

引数 必須 説明
検索値 必須 検索する値
検索範囲 必須 検索する範囲/配列
戻り範囲 必須 返す範囲/配列
見つからない時 省略可能 一致がない場合に返す値(省略可)
一致モード 省略可能 0 完全(既定)、-1 小さい値、1 大きい値、3 正規表現
検索モード 省略可能 1 先頭から(既定)、-1 末尾から

戻り値

一致した位置の戻り範囲の行(縦方向の検索)または列(横方向の検索)を配列として返し、動的配列対応の Excel ではスピルします。範囲を省略した場合、配列が空の場合、一致する項目がなく代替値もない場合は #N/A、一致位置が戻り範囲を超える場合は #REF!、内部エラーの場合は #VALUE! を返します。

数式 結果 説明
=XLOOKUP("b",{"a";"b";"c"},{10;20;30}) 20 完全一致の検索
=XLOOKUP(2,{1;2;3},{10,11;20,21;30,31}) {20,21} 一致した行全体をスピル
=XLOOKUP(9,{1;2;3},{10;20;30},"none") none 不一致の場合は代替値
=XLOOKUP({2;3},{1;2;3},{"a";"b";"c"}) {b;c} 検索値の配列 → 要素ごとの検索
=XLOOKUP("^B",{"apple";"Banana";"cherry"},{1;2;3},"none",3) 2 正規表現の一致(match_mode 3)
=XLOOKUP("(?i)^b",{"apple";"Banana";"cherry"},{1;2;3},"none",3) 2 (?i) 接頭辞で大文字小文字を無視

解説

  • match_mode 2(ワイルドカード)と search_mode 2/-2(バイナリ検索)はサポートしていません。
  • match_mode 3(正規表現)は検索値を正規表現パターンとして解釈し、パターンがテキストセルの一部に一致する(部分一致、REGEXTEST 方式)項目を探します — Microsoft 365 ネイティブの 2024 年の新機能と同じモード番号です。既定では大文字と小文字を区別し、パターンの先頭に (?i) を付けると区別しません(ネイティブと同じ使い方)。テキスト以外のセルは一致せず、検索値がテキストでない場合、正規表現が不正な場合、search_mode 2/-2(バイナリ検索)と組み合わせた場合は #VALUE! を返します。一致がない場合は見つからない時の値がそのまま適用されます。
  • 正規表現の構文は std::wregex の ECMAScript です(ネイティブの 365 の PCRE2 とは一部異なる場合があります)。
  • 検索範囲が 1 列の場合は縦方向に検索し、それ以外の場合は先頭行を対象に横方向に検索します。
  • 検索値に配列を指定すると要素ごとに検索され、検索値と同じ形状の配列としてスピルされます — 戻り範囲が複数列の場合、各要素の結果は最初の値に降格されます(ネイティブと同一)。エラーの検索値はそのエラーを返します。
  • 関連関数: XMATCH、FILTER。
  • 対応: Excel 2010+。ネイティブ関数がない旧バージョンでは XLOOKUP の名前のまま(ドロップイン)、ネイティブ関数がある新しい Excel では EG.XLOOKUP として登録されます。