如何根据第一列值对每个第二列求和

如何根据第一列值对每个第二列求和

团队,

这让我抓狂了。

我知道如何对一行中的每隔一列求和:即 {=SUM(A1:G1*(MOD(COLUMN(A1:G1),2)=0))}

我需要知道的是如何对所有第一列求和,除非第二列中有一个值,此时使用第二列。即 =SUM(IF(B1="",A1,B1))

但我需要在合理的范围内做到这一点。

仅介绍一下背景,我有多行“预测第 1 周,实际第 1 周,预测第 2 周,实际第 2 周............”

我需要使用“实际”值(如果可用)对整行求和,否则使用“预测”值

任何帮助都将非常有帮助。

答案1

您要做的就是检查该列是否为偶数或下一个列是否已填充。根据此版本的逻辑,还将包括空白偶数列,但这不会影响您的总数。

因此,我们需要使用两个不同的数组,一个偏移一个,因此我添加了 B1:H1,这意味着您必须留下一个空白列 H1,这样,在每个单元格计算期间,我们都可以考虑它的值和下一个单元格的值。

你想做的是这个,但这行不通

{=SUM(A1:G1*OR(B1:H1="",MOD(COLUMN(A1:G1),2)=0)}

上述方法不起作用的原因是 OR 不会保留数组,并且即使在您使用的数组函数中也会产生单个 TRUE/FALSE 值。

因此,我们将进行代数或运算,即 (1-(1-CONDITION1)*(1-CONDITION2))。这之所以有效,是因为 TRUE 是 1,FALSE 是 0,正如您已经利用的,乘法是 AND,但通过表示 NOT(非条件 1 且非条件 2),它相当于 Condition1 OR Condition2。如果这没有意义,请尝试遍历 True/False 组合的所有 4 种可能性。

因此我们最终得到的是:

{=SUM(A1:G1*(1-(1-(B1:H1=""))*(1-(MOD(COLUMN(A1:G1),2)=0))))}

相关内容