求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)
公式逻辑:
XLOOKUP(...)从右往左查找第一个大于0的单元格,返回它在D1:O1区域内的列位置序号OFFSET(...)截取从D1到这个最后非零单元格的子区域COUNTIF(...)统计该子区域内的零值数量
方案二(兼容Excel 2016及更早版本)
使用数组公式,输入后按Ctrl+Shift+Enter确认:
=COUNTIF(D1:INDEX(D1:O1,MAX(IF(D1:O1>0,COLUMN(D1:O1)-COLUMN(D1)+1))),0)
公式逻辑:
IF(...)为每个大于0的单元格标记其在区域内的列序号,非零值单元格返回FALSEMAX(...)提取最大的列序号,即最后一个非零单元格的位置INDEX(...)定位到该单元格,生成需要统计的子区域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
相关产品推荐
相关产品推荐

