如何在Google Sheets中使用数组进行SUMIF

4

我无法让这个计算工作。

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

RANGE作为数组正常工作,但SUM_RANGE作为数组返回错误信息:

参数必须是范围

有人能帮我吗?

谢谢,Dean。

3个回答

1
请尝试使用偏移量进行筛选: = SUM(FILTER(D3:N3, C3:M3 = "B"))

enter image description here

为什么这样做更好:

  • 您使用了整个范围。
  • 公式更短。
  • 很容易在筛选器中添加其他条件。

编辑

另请参阅带有偏移量的sumif

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


1
谢谢Max,如果我的数组是形如A3:Z3的范围,则此解决方案有效,但实际数组从整个工作表中获取值。RANGE看起来像{A3,S2,G6,K8},而SUM_RANGE是{B3,T2,H6,L8}。 - Dean van Dijk
注意:这仅适用于数据类型有明确区分的情况。如果您想根据其他数字对一组值进行求和,则无法使用此方法。例如=SUM(FILTER(D3:N3,C3:M3>5)) - AnnanFay

1
未经测试,但看看这是否有效。
=SUMPRODUCT({C3,E3,G3,I3,K3,M3}="N",{D3,F3,H3,J3,L3,N3})

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 I J K L N M
3 1 1 1 1 1 1
  • {C3,E3,G3,I3,K3,M3}="N" 创建了一个由6个值组成的数组。数组中的每个值都是 TRUEFALSE,具体取决于输入数组中对应单元格是否为 "N"。这被用作 if()logical_expression:
FALSE TRUE FALSE FALSE TRUE FALSE
  • {D3,F3,H3,J3,L3,N3} 也创建了一个包含6个数值的数组。你已经熟悉这个,但我想指出它是 if()value_if_true
1 1 1 1 1 1
  • arrayformula() 允许 if() 返回一个数组。
  • 现在,我们上面创建的第一个临时数组被用作 if() 中的 logical_expression。该公式创建了一个与输入数组大小相同的输出数组。
  • 对于输入中的每个条目,如果为 TRUE,则输出数组将使用来自 value_if_true 中相同位置的值进行填充。如果为 FALSE,则使用来自 value_if_false 的值,即 0。在此示例中,输出数组如下所示:
0 1 0 0 1 0
  • sum()函数对数组进行聚合,此示例返回2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接