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

含空值返回公式时,如何用INDEX定位最后有效内容单元格

找到B列最后一个有效内容的公式解决方案

嘿,我明白你的问题了——原来的公式是找最后一个真正空白的单元格,但你的B列单元格用=IF(AND(B50>=$G$4,B50<=$G$5),B50,"")返回的是空文本""(不是Excel认定的“空白”),所以原公式会把这些空文本当成有内容的,自然定位不到最后一个有效数值。

下面分两种Excel版本给你对应的解决办法:

如果你用的是Excel 365/2021(支持动态数组)

直接用这个简洁的公式就行,不需要按组合键:

=TAKE(FILTER(B4:B55,B4:B55<>""),-1)
  • 先通过FILTER把B4到B55里所有不是空文本的有效内容筛出来
  • 再用TAKE(..., -1)直接取筛选结果的最后一行,就是你要的最后一个有效内容

如果你用的是旧版Excel(不支持动态数组)

需要用数组公式,输入完之后一定要按Ctrl+Shift+Enter确认(不是直接回车):

=INDEX(B4:B55,MAX((B4:B55<>"")*ROW(B4:B55))-ROW(B4)+1)

给你拆解下这个公式的逻辑:

  • (B4:B55<>""):逐个检查单元格是不是有效内容(不等于空文本),得到一串TRUE/FALSE
  • *ROW(B4:B55):把TRUE转换成对应的行号,FALSE转换成0,这样就得到了一个只有有效内容行号和0的数组
  • MAX(...):从这个数组里挑最大的数,也就是最后一个有效内容所在的行号
  • -ROW(B4)+1:把绝对行号转换成B4:B55范围内的相对位置,这样INDEX就能准确找到对应的值

要是你想保留“如果没有有效内容就返回空”的逻辑,就把上面的公式套进IF里:

=IF(MAX((B4:B55<>"")*ROW(B4:B55))=0,"",INDEX(B4:B55,MAX((B4:B55<>"")*ROW(B4:B55))-ROW(B4)+1))

这个版本会在B4到B55全是空文本的时候返回空,否则返回最后一个有效内容。

顺便说下原公式失效的原因:

原公式里的ISBLANK(A55)只能识别真正的空白单元格,但你的单元格是返回"",ISBLANK会返回FALSE;而且原公式的INDEX参数也有问题——第三个参数应该是列数(单列的话填1),你填了A55,这也会导致逻辑出错。换成上面的公式就没问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:23:44