如何统计Excel中某行上方到最近非零值之间的零值数量
解决方案:计算上方到最近非零值的零值数量
根据你的需求,这里提供两种适用于不同Excel版本的公式,直接在F列对应单元格输入后下拉即可:
适用于Excel 365/2021(支持动态数组)
在F4单元格输入以下公式,下拉填充到F19:
=IF(C4<>0,0,ROW()-XLOOKUP(TRUE,C$3:C3<>0,ROW($3:3),ROW($3:3),0,-1)-1)
公式说明:
XLOOKUP(TRUE,C$3:C3<>0,ROW($3:3),ROW($3:3),0,-1):向上查找当前行上方(C3到上一行)第一个非零值所在的行号;如果上方全是零,会返回C3的行号。- 用当前行号减去这个行号再减1,得到中间的零值数量;若当前C列单元格本身非零,直接返回0。
适用于旧版Excel(无XLOOKUP支持)
在F4单元格输入以下公式,下拉填充到F19:
=IF(C4<>0,0,ROW()-LOOKUP(2,1/(C$3:C3<>0),ROW($3:3))-1)
公式说明:
LOOKUP(2,1/(C$3:C3<>0),ROW($3:3)):利用LOOKUP特性,找到当前行上方最后一个非零值的行号;如果上方全是零,会返回C3的行号。- 后续计算逻辑和上方一致,当前C单元格非零则返回0。
验证示例:
假设C14为非零值,C15、C16、C17都是0:
- F17的计算:
17-14-1=2,符合你提到的结果2 - F18的计算:如果C18上方最近非零还是C14,
18-14-1=3,符合你提到的结果3
内容的提问来源于stack exchange,提问作者Jessy Saint
相关产品推荐
相关产品推荐

