Excel中定位值最后一次出现位置并提取结果,可用五种公式:一、LOOKUP(2,1/(条件),返回列);二、INDEX+MATCH数组公式;三、XLOOKUP(search,lookup,return,,0,-1);四、INDEX+MAX+IF数组公式;五、BYROW+XMATCH逐行逆查。

如果您在Excel中需要定位某一值最后一次出现的位置并提取对应结果,但常规VLOOKUP或MATCH仅返回首个匹配项,则需借助特定公式结构实现逆向或末位匹配。以下是设置此类公式的多种可行方式:
一、使用LOOKUP函数构造末位查找
LOOKUP函数在非精确匹配模式下会自动定位查找区域中最后一个满足条件的逻辑真值位置,利用该特性可稳定提取末次匹配项。其核心在于构建由1和错误值组成的数组作为查找向量。
1、在目标单元格中输入公式:=LOOKUP(2,1/(A2:A100=E2),B2:B100)
2、其中A2:A100为查找列,E2为待查值,B2:B100为返回列
3、公式中1/(A2:A100=E2)生成一个由1(匹配处)和#DIV/0!(不匹配处)构成的数组
4、LOOKUP以2为查找值,在该数组中无法找到2,因此返回最后一个1所在位置对应的B列值
二、采用INDEX与MATCH组合的数组公式
MATCH函数本身默认从上至下扫描,但通过构造倒序逻辑数组,可迫使它锁定最大行号匹配位置。此方法需以数组形式确认,适用于所有Excel版本(含旧版)。
1、输入公式:=INDEX(B2:B100,MATCH(2,1/(A2:A100=E2),1))
2、按Ctrl+Shift+Enter完成输入,公式两端将自动添加大括号{}
3、1/(A2:A100=E2)生成逻辑数组,MATCH在降序隐含逻辑下识别最后一个1的位置
4、INDEX据此行号从B列提取对应值
三、应用XLOOKUP函数的反向搜索模式
XLOOKUP支持显式指定搜索方向,参数search_mode设为-1即可从末尾开始向前查找,无需数组运算,语法简洁且兼容动态数组。
1、在目标单元格输入:=XLOOKUP(E2,A2:A100,B2:B100,,0,-1)
2、第5个参数0表示完全匹配,第6个参数-1启用从后往前搜索
3、若A列中无匹配项,公式返回#N/A;如需自定义提示,可在第4参数填入文本,例如"未找到"
4、该公式无需特殊按键确认,直接回车即可生效
四、基于ROW与MAX的数组定位法
该方法直接计算所有匹配项所在行号的最大值,再用INDEX提取该行对应数据,逻辑直观,适合理解底层原理。
1、输入公式:=INDEX(B2:B100,MAX(IF(A2:A100=E2,ROW(A2:A100)-ROW(A2)+1,0)))
2、按Ctrl+Shift+Enter确认为数组公式
3、IF(A2:A100=E2,ROW(A2:A100)-ROW(A2)+1,0)将匹配行转换为相对于B2的相对行号
4、MAX函数获取最大相对行号,INDEX据此提取B列对应单元格值
五、利用BYROW与XMATCH逐行逆序查找(适用于多行批量处理)
当需在每行中分别查找最后一个匹配值(如每行找最后一个“Apple”),BYROW可驱动XMATCH对各行独立执行右向左搜索,配合INDEX返回列标题或数值。
1、假设数据区域为A2:D10,标题行在A1:D1,查找值为“Apple”,输入:=BYROW(A2:D10,LAMBDA(row,LET(pos,XMATCH("Apple",row,0,-1),IF(ISNUMBER(pos),INDEX($A$1:$D$1,pos),NA()))))
2、XMATCH第4参数-1指定从右向左查找,返回最右侧匹配列的位置索引
3、LET函数暂存位置pos,再用INDEX($A$1:$D$1,pos)取得首行对应列标题
4、若某行无匹配,IF函数返回NA(),避免错误扩散










