【问题标题】:How to SUMIF with an array in Google Sheets如何在 Google 表格中使用数组进行 SUMIF
【发布时间】:2021-02-26 01:07:25
【问题描述】:

我无法让这个计算工作。

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

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

参数必须是范围

谁能帮帮我?

谢谢, 院长。

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    请尝试使用偏移量过滤:

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

    为什么更好:

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

    编辑

    另见sumif 带偏移量:

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

    【讨论】:

    • 感谢 Max,如果我的数组是 A3:Z3 形式的范围,但我的实际数组正在从整个工作表中获取值,则此解决方案有效。 RANGE 看起来像 {A3,S2,G6,K8} 而 SUM_RANGE 是 {B3, T2, H6, L8}
    • 注意:这仅在您明确区分数据类型时才有效。它在任意情况下都不起作用,例如,如果您想根据其他数字对一组值求和。类似=SUM(FILTER(D3:N3,C3:M3>5))
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      这是 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 Y 1 N 1 Y 1 Y 1 N 1 Y 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-29
        • 2022-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多