You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何查找包含相同数据的上一行?Excel向上匹配相同值的公式咨询

解决Excel向上查找上一个匹配值的问题

嘿,这个场景我太熟悉了!XLOOKUP默认是从区域起始位置往下搜索,确实没法直接从当前位置向上找最近的匹配值,不过咱们有几个非常实用的公式方案,完美解决这个需求:

方案1:INDEX + MAX + IF(兼容新旧Excel版本)

如果要返回上一个值为1的单元格内容,用这个公式:

=INDEX(A:A,MAX(IF(A$1:A6=1,ROW(A$1:A6),0)))
  • 原理IF(A$1:A6=1,ROW(A$1:A6),0)会把A1到A6中所有值为1的单元格行号保留,其他位置返回0;MAX提取其中最大的行号(也就是离当前A7最近的那个1的位置);最后INDEX从A列中取出对应行的内容。
  • 注意:在旧版Excel(非365/2021)中,输入完公式后需要按 Ctrl+Shift+Enter 作为数组公式执行;新版Excel会自动识别数组运算,直接回车即可。

如果想直接返回单元格的地址(比如$A$4),可以套一个CELL函数:

=CELL("address",INDEX(A:A,MAX(IF(A$1:A6=1,ROW(A$1:A6),0))))

方案2:XLOOKUP 反向数组技巧(仅适用于Excel 365/2021)

既然你想用XLOOKUP,咱们可以把搜索区域倒过来,让它从当前位置往前找:

=XLOOKUP(1,INDEX(A$1:A6,SEQUENCE(ROWS(A$1:A6),,ROWS(A$1:A6),-1)),A$1:A6,,0,1)
  • 原理INDEX(A$1:A6,SEQUENCE(ROWS(A$1:A6),,ROWS(A$1:A6),-1))会把A1:A6的内容倒序排列(变成A6、A5...A1),然后XLOOKUP在这个倒序区域里找第一个1,最后返回原区域中对应的单元格内容,刚好就是离A7最近的上一个1。

方案3:LOOKUP 函数简化版(适用于所有版本)

LOOKUP有个“隐藏特性”可以用来找最后一个匹配值,公式更简洁:

=LOOKUP(2,1/(A$1:A6=1),A$1:A6)
  • 原理1/(A$1:A6=1)会把匹配的位置变成1,不匹配的变成错误值;LOOKUP会忽略错误值,在剩下的1中找到最后一个对应的A列内容,也就是我们要的上一个1。

小提示

把公式中的A$1:A6改成动态引用,公式可以自动适应当前单元格位置,不用手动调整区域:

=LOOKUP(2,1/(A$1:INDIRECT("A"&ROW()-1)=1),A$1:INDIRECT("A"&ROW()-1))

内容的提问来源于stack exchange,提问作者daez12

火山引擎 最新活动