如何使用Google表格中的数组进行SUMIF

时间:2018-02-09 00:23:42

标签: google-sheets

我不能让这个计算起作用。

=SUMIF({C3,E3,G3,I3,K3,M3},"N",{D3,F3,H3,J3,L3,N3})

RANGE的数组工作正常但数组SUM_RANGE返回错误消息:

  

参数必须是范围

任何人都可以帮助我吗?

谢谢, 迪安。

3 个答案:

答案 0 :(得分:1)

未经测试,但看看是否有效

=SUMPRODUCT({C3,E3,G3,I3,K3,M3}="N",{D3,F3,H3,J3,L3,N3})

答案 1 :(得分:1)

请尝试使用偏移量过滤:

=SUM(FILTER(D3:N3,C3:M3="B"))

enter image description here

为什么它更好:

  • 你使用整个范围。
  • 公式更短
  • 很容易在过滤器中添加其他条件。

修改

另请参见sumif with offset:

=SUMIF(C3:M3,"B",D3:N3)

答案 2 :(得分:1)

这是 sum(if()) 模式而不是 sumif() 模式的一个很好的候选者。试试这个:

=sum(arrayformula(if({C3,E3,G3,I3,K3,M3}="N",{D3,F3,H3,J3,L3,N3},0)))

工作原理

<头>
A B C D E F G H J K L N M
3 Y 1 N 1 Y 1 Y 1 N 1 Y 1
  • {C3,E3,G3,I3,K3,M3}="N" 创建一个包含 6 个值的数组。数组中的每个值是 TRUEFALSE,具体取决于输入数组中的相应单元格是否为“N”。这用作 logical_expressionif()
<头>
TRUE TRUE
  • {D3,F3,H3,J3,L3,N3} 也创建了一个包含 6 个值的数组。您已经熟悉了这一点,但我将其包括在内是为了指出它是 value_if_trueif()
<头>
1 1 1 1 1 1
  • arrayformula() 允许 if() 返回一个数组
  • 现在,我们上面创建的第一个临时数组用作 logical_expression 中的 if()。该公式创建一个与输入数组大小相等的输出数组。
  • 对于输入中的每个条目,如果为 TRUE,则输出数组将填充 value_if_true 中相同位置的值。如果是 FALSE,则使用 value_if_false, 中的值 0。在这个例子中,输出数组看起来像:
<头>
0 1 0 0 1 0
  • sum() 聚合数组,在本例中返回 2