Excel 具有两个值的 sumif 抛出错误

Excel sumifs with two values throwing an error

如果 A 是 abccba 并且 B 是 def:

,我正在尝试获取 C 列的总和

=SUMIFS(C2:C51;A2:A51;{"abc","cba"};B2:B51;"def")

但是公式无效,不确定我的错误在哪里,因为这是在快速 google 搜索中提出的。

感谢您的建议。

该公式对我有效,但这可能与您的分隔符有关。根据您的 excel、windows 或位置设置,您可能需要使用逗号 , 作为分隔符,而不是分号 ;.

至于你的公式,为了完成,我做了同样的 google 搜索并以 this reference 结束。看起来你在公式中的逻辑是正确的,除了一个关键步骤,SUM( 环绕你的公式。这意味着如果您的公式有效,它只会考虑第一次命中,但对于总和,它会计算您的逻辑为 True 的每个条目。语法:

=SUM(SUMIFS(C2:C51,A2:A51,{"abc","cba"},B2:B51,"def"))

或分号分隔:

=SUM(SUMIFS(C2:C51;A2:A51;{"abc";"cba"};B2:B51;"def"))

由于 {array} 选项似乎不适合您,我提出如下解决方法:

=SUMIFS(C1:C15;A1:A15;"abc";B1:B15;"def")+SUMIFS(C1:C15;A1:A15;"cba";B1:B15;"def")

这是一个更笨重的函数,但通过将数据拆分为两个 SUMIFS( 函数并将结果相加得到相同的结果。

可能我会使用@Plutian 的答案(实际上我赞成),但如果它可能对你有用,你可以使用 SUMPRODUCT 结合 DOUBLE UNARY 来得到你想要的。

DOUBLE UNARY

SUMPRODUCT

我做了一个这样的假数据集:

如您所见,只有突出显示的值符合您的要求(如果A=abc OR cba AND B=def

我的E10公式是:

=SUMPRODUCT(--($A:$A="abc")+--($A:$A="cba");--($B:$B="def");$C:$C)

这是它的工作原理:

    如果满足条件,
  1. ($A:$A="abc") 将 return 一个 True/False 值的数组。
  2. 该数组,因为它在双一元运算符 --( your range ) 内,会将所有 True/False 值转换为 1 or 0 值。假设它的工作原理就像您选择了仅包含 1 或 0 的单元格范围。因此在这种情况下,这将 return 一个类似于 {1,0,1,0,1,0} 的数组
  3. --($A:$A="cba") 将再次执行与步骤 1 或 2 完全相同的操作,但使用您的第二个选项。它将 return 另一个值数组,在这种情况下,{0,1,0,1,0,1}
  4. --($A:$A="abc")+--($A:$A="cba") 我们只是对两个数组求和,所以 {1,0,1,0,1,0}+{0,1,0,1,0,1}={1,1,1,1,1,1}
  5. --($B:$B="def") 将按照您的第三个条件再次执行第 1 步和第 2 步,并且 return 另一个数组,现在它将是 {1,0,1,0,0,1}
  6. 将第5步得到的数组乘以第4步得到的数组,所以我们做{1,1,1,1,1,1} * {1,0,1,0,0,1}={1,0,1,0,0,1}
  7. 现在,在第 7 步中获得的最终数组将乘以单元格 $C:$C,因此在本例中为 {1,0,1,0,0,1} * {10,1,10,1,1,10} = {10,0,10,0,0,10}
  8. 最后一步,我们将上一步获得的数组中的所有值相加,所以我们做10+0+10+0+0+10=30

我已经解释了每一步以确保每个人都能理解,因为 SUMPRODUCT 它真的是一个有用的函数,如果你知道如何处理(我是一个菜鸟,但我在这里看到真正的英雄使用这个功能)。

使用 SUMPRODUCT 而不是 SUMIFS 的优点是您可以轻松添加更多条件以应用相同范围(案例 --($A:$A="abc")+--($A:$A="cba") 或将单个条件应用到其他范围(案例 --($B:$B="def"))。

对于普通的 SUMIFS,您可能必须为同一范围内应用的每个条件添加 1 个额外的完整 SUMIF。

希望对您有所帮助