openoffice-calc - 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)
现在,如果每个空白单元格都包含一个零,那么上面显示的输出就是我用这个公式看到的。Event
如果A2:A5 中的值与字符串 AAA 的 A11 匹配,则该公式将 B2:C5 范围内的每个值相加,输出总数为 5。
所以问题是,我怎样才能忽略空白单元格,而不在其中输入 0?我曾考虑过使用N()
or ISBLANK()
,但这些都不适用于范围。只有单个细胞。
解决方案
即使所有值都是数字,也不清楚哪个Calc
版本可以工作。根据定义,总和范围和标准范围必须具有相同的大小。但在这里它们的大小不同。=SUMIFS(B2:C5,A2:A5,A11)
B2:C5
但
中的公式B11
:
=SUMPRODUCT(($A$2:$A$5=$A11)*ISNUMBER($B$2:$C$5),($B$2:$C$5))
应该可以工作,并且应该与所有电子表格应用程序最兼容。
这个怎么运作:
($A$2:$A$5=$A11)
获取一个 1 列 x 4 行的矩阵,{TRUE;FALSE;FALSE;TRUE}
其中的值是否$A$2:$A$5
等于$A11
。乘以 with ISNUMBER($B$2:$C$5)
,它是一个 2 列 x 4 行的矩阵,{TRUE,TRUE;TRUE,TRUE;FALSE,TRUE;TRUE,FALSE}
表示 in 的值是否$B$2:$C$5
为数字,得到一个 2 列 x 4 行的矩阵,{1,1;0,0;0,0;1,0}
判断 in 的值是否$A$2:$A$5
等于$A11
AND 的值$B$2:$C$5
是否为数字。然后SUMPRODUCT
将这两个数组{1,1;0,0;0,0;1,0}
和$B$2:$C$5
=相加1*B2 + 1*C2 + 0*B3 + 0*C3 + 0*B4 + 0*D4 + 1*B5 + 0*C5
。
推荐阅读
- reactjs - 当我对 .scss 文件进行更改时,如何在 React 中配置 webpack 以停止重新加载我的应用程序?
- c# - 在运行时强制转换为任意非泛型返回类型,C#
- android - 如何在列表中创建列表?
- bash - 需要帮助在 bash 中设置别名
- networking - 使用 vxlan 通过 L3 网络共享 L2 网络
- javascript - 在 safari 上反应 firebase window.print() 不会运行
- typescript - 如何以更易读的方式用现有类型定义函数类型?
- deployment - EPPlus.Core 安全吗?
- r - 如何将数据输入ggplots
- c - How do you continue to scan until new line C without using (fgets)