XLOOKUP函数可通过设置search_mode为-1实现反向查找以定位最后一个匹配值;或用INDEX/XMATCH组合逆序数组;也可用FILTER/MAX/ROW筛选末位匹配项。

如果您在Excel中使用XLOOKUP函数进行查找,但默认从前往后匹配无法满足需求,例如需定位最后一个符合条件的值,则可通过调整搜索模式实现反向查找。以下是具体操作步骤:
一、启用从后往前搜索模式
XLOOKUP函数支持通过第6个参数(search_mode)控制查找方向,设置为-1即可启用从最后一个元素开始向前搜索的模式,确保返回最末次出现的匹配项。
1、在目标单元格中输入XLOOKUP函数,完整语法结构为:=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])。
2、将第6个参数search_mode明确设为-1,例如:=XLOOKUP("张三", A2:A100, B2:B100, "未找到", 0, -1)。
3、按Enter确认公式,函数将从A100开始向上逐行比对,首次匹配即返回对应B列值,实现反向定位。
二、结合数组逆序构造实现逻辑反向
当search_mode不可用(如旧版兼容场景)或需更灵活控制时,可借助INDEX与XMATCH组合并手动反转查找区域,使逻辑上等效于从后往前搜。
1、使用SEQUENCE函数生成倒序行号索引,例如:SEQUENCE(ROWS(A2:A100), , ROWS(A2:A100), -1)。
2、以该索引配合INDEX重构查找数组:INDEX(A2:A100, SEQUENCE(ROWS(A2:A100), , ROWS(A2:A100), -1)),得到A100至A2的逆序列表。
3、嵌套XMATCH在逆序数组中执行正向查找,再用INDEX从原始返回数组中提取对应位置结果,最终公式形如:=INDEX(B2:B100, XMATCH("张三", INDEX(A2:A100, SEQUENCE(ROWS(A2:A100), , ROWS(A2:A100), -1))))。
三、利用FILTER与ROW函数筛选末位匹配项
此方法不依赖search_mode,而是先获取全部匹配位置,再取最大行号对应值,适用于需排除重复干扰或附加条件筛选的场景。
1、使用FILTER函数配合ROW生成所有匹配行号:FILTER(ROW(A2:A100), A2:A100="张三")。
2、嵌套MAX函数提取其中最大行号:MAX(FILTER(ROW(A2:A100), A2:A100="张三"))。
3、用INDEX根据该行号从返回列取值:=INDEX(B2:B100, MAX(FILTER(ROW(A2:A100), A2:A100="张三")) - ROW(A2) + 1)。
4、注意公式需为动态数组公式,若Excel版本不支持FILTER,将返回#NAME?错误,此时应改用数组公式形式按Ctrl+Shift+Enter输入。










