XLOOKUP¶
類別: MS Excel 相容函數 · 原生導入: Excel 2021
在範圍或陣列中尋找相符項,並從第二個範圍或陣列傳回對應項。
語法¶
=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 原生 XLOOKUP 的 2024 年新功能相同。預設區分大小寫;在模式前加上 (?i) 可忽略大小寫(與原生用法相同)。非文字儲存格不會相符;搜尋值不是文字、正則無效、或與 search_mode 2/-2(二進位搜尋)組合時傳回 #VALUE!。沒有相符時仍會套用找不到時的值。
- 正規表示式語法為 std::wregex 的 ECMAScript(可能與原生 365 的 PCRE2 略有差異)。
- 若查閱範圍只有 1 欄則進行垂直搜尋,否則以第一列為對象進行水平搜尋。
- 查閱值指定為陣列時會逐元素查閱,結果以與查閱值相同的形狀溢出 — 傳回範圍為多欄時,各元素結果會降級為第一個值(與原生一致);錯誤的查閱值會傳回該錯誤。
- 相關函數:XMATCH、FILTER。
- 支援: Excel 2010+。在沒有原生函數的舊版 Excel 中以
XLOOKUP原名註冊(可直接替換),在已內建原生函數的新版 Excel 中則註冊為EG.XLOOKUP。