对单列中相邻单元格求和,且其值为 0

对单列中相邻单元格求和,且其值为 0

我有一串数字(一列中有 8780 个值 - 下面贴出了一个示例)其中一些是 <> 0,一些是 0。

数字列表:
0
0
0
0
0,127227198
0
0
0,229366036
0,174893344
0
0,247079364
0
0,508165499 0,380252705
0,221018177 0,703514629 0 0,49853953 0,891621276 1,795142292 0 0 0 0 1,405576577 0,965799766 0,347987496 0,15944612 0,087348148 0 0
















对于每个相邻的 <>0 数字系列,我想汇总这些单元格值,并将总和添加到 B 列中的单独单元格中。我该怎么做?我可以在 B 列中使用 if 函数的某种组合吗?

正如您所看到的,数字 <> 0 随机出现,所以我认为需要某种公式来检查前一行或后一行是否 = 0,如果后一行 <> 0,它应该开始对上面的数字求和。

例如,我想将以下数字的总和添加到一个单元格中。

1,405576577  
0,965799766  
0,347987496  
0,15944612  
0,087348148 

我非常感谢任何能给我的帮助!希望这能变得更清楚 :)

答案1

对于 中的原始数据A1:A25,您可以使用以下内容:

通过粘贴到公式栏并按+ +输入B1以下数组公式:CtrlShiftEnter

=SUMPRODUCT((MIN(IF($A1:$A$25=0,ROW($A1:$A$25),ROW($A$26)))>ROW($A1:$A$25))*($A1:$A$25))

此公式将 A1 中第一个零之前及以下的值相加。

输入B2类似的数组公式,但有一个额外的条件(也使用++ Ctrl):ShiftEnter

=IF(A1<>0,0,SUMPRODUCT((MIN(IF($A2:$A$25=0,ROW($A2:$A$25),ROW($A$26)))>ROW($A2:$A$25))*($A2:$A$25)))

这有一个条件,用于检查 A 列上方是否存在非零单元格 - 如果非零,则返回 0。否则,对下一个零之前出现的值求和。

样本:

在此处输入图片描述

相关内容