我有一串数字(一列中有 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。否则,对下一个零之前出现的值求和。
样本: