Calc 中空白单元格范围的条件总和
Conditional sum of range with blank cells in Calc
我在电子表格中有以下数据:
----------------------
|Event |Value1|Value2|
|AAA |1 |1 |
|BBB |1 |3 |
|BBB | |2 |
|AAA |3 | |
----------------------
我想计算 Value1
和 Value2
中所有数字的总和,所以我有一个输出:
--------------
|Type |Total|
|AAA |5 |
|BBB |6 |
--------------
为此,我需要在 Total
下的单元格中添加一个公式。但是,当存在空白单元格时,我尝试过的公式不起作用。如果我在每个空白单元格中都放一个 0,我会得到想要的结果,但我的数据集比提供的示例大得多,并且让那么多单元格为 0 会降低可读性。
我试过的公式如下所示。假设Event
是A1,Type
是A10。
=SUMIFS(B2:C5,A2:A5,A11)
现在,如果每个空白单元格都包含一个零,上面显示的输出将是我用这个公式看到的。如果 A2:A5 中的 Event
值与 A11(字符串 AAA)匹配,则公式对 B2:C5 范围内的每个值求和,输出总数为 5.
所以问题是,我怎样才能忽略空白单元格而不在其中输入 0?我考虑过使用 N()
或 ISBLANK()
,但它们都不适用于范围。仅单个细胞。
不清楚 Calc
版本 =SUMIFS(B2:C5,A2:A5,A11)
是否有效,即使 B2:C5
中的所有值都是数字。根据定义,总和范围和标准范围必须具有相同的大小。但是这里他们的大小不一样。
但是
B11
中的公式:
=SUMPRODUCT(($A:$A=$A11)*ISNUMBER($B:$C),($B:$C))
应该可以工作,而且应该与所有电子表格应用程序最兼容。
工作原理:
($A:$A=$A11)
得到{TRUE;FALSE;FALSE;TRUE}
的1列x 4行矩阵,判断$A:$A
中的值是否等于$A11
。这个乘以withISNUMBER($B:$C)
是一个2列x 4行的矩阵{TRUE,TRUE;TRUE,TRUE;FALSE,TRUE;TRUE,FALSE}
判断$B:$C
中的值是否为数值,得到一个2列x 4行的矩阵{1,1;0,0;0,0;1,0}
$A:$A
中的值是否等于 $A11
且 $B:$C
中的值是否为数字。然后 SUMPRODUCT
对这两个数组 {1,1;0,0;0,0;1,0}
和 $B:$C
= 1*B2 + 1*C2 + 0*B3 + 0*C3 + 0*B4 + 0*D4 + 1*B5 + 0*C5
.
求和
我在电子表格中有以下数据:
----------------------
|Event |Value1|Value2|
|AAA |1 |1 |
|BBB |1 |3 |
|BBB | |2 |
|AAA |3 | |
----------------------
我想计算 Value1
和 Value2
中所有数字的总和,所以我有一个输出:
--------------
|Type |Total|
|AAA |5 |
|BBB |6 |
--------------
为此,我需要在 Total
下的单元格中添加一个公式。但是,当存在空白单元格时,我尝试过的公式不起作用。如果我在每个空白单元格中都放一个 0,我会得到想要的结果,但我的数据集比提供的示例大得多,并且让那么多单元格为 0 会降低可读性。
我试过的公式如下所示。假设Event
是A1,Type
是A10。
=SUMIFS(B2:C5,A2:A5,A11)
现在,如果每个空白单元格都包含一个零,上面显示的输出将是我用这个公式看到的。如果 A2:A5 中的 Event
值与 A11(字符串 AAA)匹配,则公式对 B2:C5 范围内的每个值求和,输出总数为 5.
所以问题是,我怎样才能忽略空白单元格而不在其中输入 0?我考虑过使用 N()
或 ISBLANK()
,但它们都不适用于范围。仅单个细胞。
不清楚 Calc
版本 =SUMIFS(B2:C5,A2:A5,A11)
是否有效,即使 B2:C5
中的所有值都是数字。根据定义,总和范围和标准范围必须具有相同的大小。但是这里他们的大小不一样。
但是
B11
中的公式:
=SUMPRODUCT(($A:$A=$A11)*ISNUMBER($B:$C),($B:$C))
应该可以工作,而且应该与所有电子表格应用程序最兼容。
工作原理:
($A:$A=$A11)
得到{TRUE;FALSE;FALSE;TRUE}
的1列x 4行矩阵,判断$A:$A
中的值是否等于$A11
。这个乘以withISNUMBER($B:$C)
是一个2列x 4行的矩阵{TRUE,TRUE;TRUE,TRUE;FALSE,TRUE;TRUE,FALSE}
判断$B:$C
中的值是否为数值,得到一个2列x 4行的矩阵{1,1;0,0;0,0;1,0}
$A:$A
中的值是否等于 $A11
且 $B:$C
中的值是否为数字。然后 SUMPRODUCT
对这两个数组 {1,1;0,0;0,0;1,0}
和 $B:$C
= 1*B2 + 1*C2 + 0*B3 + 0*C3 + 0*B4 + 0*D4 + 1*B5 + 0*C5
.