1

我正在尝试制作一个公式,该公式使用 SUMIFS 和 COUNTIFS 来查找具有来自不同列的两个标准之一的数字的平均值。因此,如果条件在范围 1 或范围 2 或两者中都满足,我希望它在一列中添加数字,而不是仅在两者都满足的情况下。我需要为 COUNTIFS 做同样的事情。

现在我把它格式化为

=SUM(SUMIF(XX:XX,"<130"ZZ:ZZ),SUMIF(YY:YY,"<80",ZZ:ZZ))/SUM(COUNTIF(XX:XX,"<130"ZZ:ZZ),COUNTIF(YY:YY,"<80",ZZ:ZZ))

但我知道它会添加一些数字两次,因为它会下降两列并计算同时具有这两个列的数字。

这是我尝试使用 COUNTIF 作为 COUNTIFS 作为 OR 运算符而不是 AND,有人有什么建议吗?

4

1 回答 1

0

您可以将 2 个 SUMPRODUCTS 组合起来,1 个得到满足条件的所有值的总和,另一个来计算有多少值满足条件,然后求平均值。

在此处输入图像描述

在这种情况下,只有当 B 或 C 列等于 1 时,我才想获得 A 列中值的平均值。绿色值是唯一满足此要求的值,总共 8 个值。

如果我们这样做,(3+4+5+7+8+9+11+12)我们得到 59,并且59/8=7.375,我的公式的结果

我的公式是:

=SUMPRODUCT(--(((B1:B15<2)+(C1:C15<2))<>0);A1:A15)/SUMPRODUCT(--(((B1:B15<2)+(C1:C15<2))<>0))

第一个 SUMPRODUCT 将返回总和值:

SUMPRODUCT(--(((B1:B15<2)+(C1:C15<2))<>0);A1:A15)

这是它的工作原理:

  1. (B1:B15<2)如果值 <2,将返回一个数组或 False/True。在这种情况下,我们得到{0;0;1;1;1;0;0;1;1;0;1;1;0;0;0}
  2. (C1:C15<2)与以前相同,但在 C 列中,所以我们得到{0;0;1;1;1;0;1;1;0;0;1;1;0;0;0}
  3. --(((B1:B15<2)+(C1:C15<2))<>0)双一元运算符将检查前面两个数组的和是否不等于 0(这意味着 ROW 有效),如果为真则返回 1,如果为假则返回 0。所以它返回{0;0;1;1;1;0;1;1;1;0;1;1;0;0;0}
  4. 我们将步骤 3 中的数组与 A 列中的值相乘,然后将它们相加,得到 59

第二个 SUMPRODUCT 的工作原理完全相同,但没有第 4 步,所以我们只得到 1 和 0 的总和来获得符合条件的值,在本例中为 8。

最后59/8=7.375

于 2020-11-28T23:07:07.147 回答