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

如何定位末尾为零或空单元格的数组中最后一个非零元素

获取数组中最后一个非零(非空)元素的Excel公式

嘿,这个问题我之前也帮人解决过!你提到的INDEX(1:1,0,COUNTA(1:1))确实在所有末尾单元格都是有效值的时候好用,但碰到末尾有0或者空单元格就抓瞎了——毕竟COUNTA会把非空的0算进去,空单元格又会让它的计数不准。针对A1:I1这种区域,我给你两个实用的公式,分Excel版本来用:

  • 适用于Excel 365/2021(支持动态数组)
    直接用这个公式就行:

    =LOOKUP(2,1/(A1:I1<>0),A1:I1)
    

    逻辑很简单:A1:I1<>0会生成一个布尔数组,非零单元格返回TRUE,零或空单元格返回FALSE;1/(...)把TRUE转成1,FALSE转成错误值#DIV/0!;LOOKUP在查找2的时候会自动忽略错误值,定位到最后一个1对应的单元格,返回里面的数值,也就是你要的最后一个非零元素。

    如果需要同时排除空单元格(比如有的位置是空值而非0),可以调整成:

    =LOOKUP(2,1/((A1:I1<>0)*(A1:I1<>"")),A1:I1)
    
  • 适用于旧版Excel(不支持动态数组)
    这个需要按Ctrl+Shift+Enter作为数组公式输入:

    =INDEX(A1:I1,MAX(IF(A1:I1<>0,COLUMN(A1:I1)-COLUMN(A1)+1)))
    

    解释下:IF(A1:I1<>0,COLUMN(A1:I1)-COLUMN(A1)+1)会给每个非零单元格返回它在A1:I1区域内的相对列号(比如A1是1,B1是2...),零或空单元格返回FALSE;MAX提取最大的那个列号,也就是最后一个非零元素的位置,最后用INDEX取出对应的值。

    同样,如果要同时排除空单元格,改成:

    =INDEX(A1:I1,MAX(IF((A1:I1<>0)*(A1:I1<>""),COLUMN(A1:I1)-COLUMN(A1)+1)))
    

拿你说的A1:I1区域举例,假设最后几个单元格是0或空,只要前面有6作为最后一个非零元素,用上面的公式就能准确得到6啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:52:37