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

求D1:O1区域中最后一个大于0单元格前的零值单元格计数公式

统计指定区域内最后一个非零单元格前的零值数量

适用场景

针对单元格区域D1:O1,统计从D1到最后一个大于0的单元格之间的零值数量,该单元格之后的零值不计入统计。


方案一(Excel 2019及以上版本适用)

直接使用以下公式,回车即可得到结果:

=COUNTIF(OFFSET(D1,0,0,1,XLOOKUP(TRUE,D1:O1>0,COLUMN(D1:O1)-COLUMN(D1)+1,0,0,-1)),0)

公式逻辑:

  1. XLOOKUP(...)从右往左查找第一个大于0的单元格,返回它在D1:O1区域内的列位置序号
  2. OFFSET(...)截取从D1到这个最后非零单元格的子区域
  3. COUNTIF(...)统计该子区域内的零值数量

方案二(兼容Excel 2016及更早版本)

使用数组公式,输入后按Ctrl+Shift+Enter确认:

=COUNTIF(D1:INDEX(D1:O1,MAX(IF(D1:O1>0,COLUMN(D1:O1)-COLUMN(D1)+1))),0)

公式逻辑:

  1. IF(...)为每个大于0的单元格标记其在区域内的列序号,非零值单元格返回FALSE
  2. MAX(...)提取最大的列序号,即最后一个非零单元格的位置
  3. INDEX(...)定位到该单元格,生成需要统计的子区域
  4. COUNTIF(...)统计子区域内的零值数量

特殊情况说明

  • 若区域内全为零,公式返回0(无有效非零单元格,不统计任何零值)
  • 若区域内无零值,公式返回0
  • 若需排除空单元格(避免被误判为0),可将公式中的0替换为"0",同时确保单元格内的零为文本格式,或改用COUNTIFS组合条件:
    =COUNTIFS(OFFSET(D1,0,0,1,XLOOKUP(TRUE,D1:O1>0,COLUMN(D1:O1)-COLUMN(D1)+1,0,0,-1)),0,OFFSET(D1,0,0,1,XLOOKUP(TRUE,D1:O1>0,COLUMN(D1:O1)-COLUMN(D1)+1,0,0,-1)),">""")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:30:46