You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel公式求助:提取行中最后一个非空且排除指定文本的对应值

Excel公式求助:提取行中最后一个非空且排除指定文本的对应值

我完全懂你这种差一点就摸到答案但就是不对的憋屈感!你要的是找到行里最后一个**既不是空值、也不是"ICU_Approval"**的单元格,然后返回同一列下方对应位置的数值对吧?看你举的例子,就是要定位到SI-003那列,然后返回7、16或者25这类值。

先帮你分析下之前的公式问题:

  • 第一个用INDEX+MAX+IF的公式,你用了ROW(S1:AA1),但这个区域是同一行,ROW返回的行号都是1,所以MAX后得到1,自然只返回第一列的数值,这就是为啥出1的原因。
  • 第二个LOOKUP公式,引用固定单元格$U$1的逻辑不够灵活,没法准确匹配所有排除条件。

给你两个靠谱的解决方案:

方案一:用XLOOKUP(365/2021及以上版本适用)

这个函数本身支持反向查找,用起来最直观:

=XLOOKUP(2,1/($S1:$AA1<>"")*($S1:$AA1<>"ICU_Approval"),$S9:$AA9,,,-1)

解释下逻辑:

  1. 1/($S1:$AA1<>"")*($S1:$AA1<>"ICU_Approval") 会把符合条件的单元格转成1,不符合的转成错误值
  2. 最后一个参数-1表示从右往左查找,直接定位到最后一个符合条件的位置
  3. 找到后返回$S9:$AA9对应列的数值

方案二:兼容旧版Excel的INDEX+MAX+IF组合

把你之前的公式改改,用COLUMN代替ROW,因为我们是在同一行找列的位置:

=INDEX($S9:$AA9,MAX(IF(($S1:$AA1<>"")*($S1:$AA1<>"ICU_Approval"),COLUMN($S1:$AA1)-COLUMN($S1)+1)))

解释下:

  • COLUMN($S1:$AA1)-COLUMN($S1)+1 是把列号转成从1开始的相对位置(比如S列是1,T列是2...)
  • MAX会找到最后一个符合条件的相对列数,再用INDEX从$S9:$AA9里取出对应值

测试下的话,这两个公式都能返回你要的7、16或者25这类结果,完美避开"ICU_Approval"和空值~

备注:内容来源于stack exchange,提问作者user1987243

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:28:17