带有 Sumifs 的 Google 表格 ArrayFormula

问题描述 投票:0回答:4

通常不需要帮助整理床单,但我认为我的大脑因为想太多而崩溃了。

尝试使用数组公式填充整个列,该公式根据其他两列的条件对单独列的值求和。如果这听起来很奇怪,请查看这个示例表

发票有编号。客户付款有“存入”银行账户以及与之关联的发票编号,因此我知道哪笔付款对应哪张发票。有时付款是分段进行的。我想对每张发票和不同账户的所有付款进行汇总。我知道如何使用 sumifs 来做到这一点。我想使用的技巧是在第一个单元格中使用一个数组公式来执行此操作。感谢所有帮助。

google-sheets sumifs array-formulas
4个回答
25
投票

我最终使用的解决方案是这样的:

感谢 2n9 来自谷歌论坛。这是链接

=arrayformula(sumif(B3:B8&C3:C8,F3:F8&"A",A3:A8))

使用 Jean-Pierre Verhulst 的查询还有其他一些非常好的答案:

=query(A2:C8, "select B, sum(A) group by B pivot C")

=query(query(A2:C8, "select B, sum(A) group by B pivot C"), "select Col2, Col3")

=ArrayFormula(query(query(A2:C8, "select B, sum(A) group by B pivot C"), "select Col2, Col3 offset 1",0)+0)

这些解决方案中的每一个都以不同的方式解决了问题。它们具有不同的属性,例如删除标题或仅选择特定列。使用链接到谷歌论坛了解更多信息。

希望这对某人有帮助。


0
投票

我在两个表中添加了一个列来组合需要匹配的两个条件。

我使用了一个数组公式来扩展组合条件,然后我在另一个数组公式中使用了一个 sumif 来做一个数组公式中有效的 sumifs。

表 1(油漆估算)

=ARRAYFORMULA(IFERROR(IF(E2:E<>"",E2:E&"First Coat",0),"E"))
=ARRAYFORMULA(IFERROR(SUMIF(Progress!B2:B,T2:T,Progress!G2:G),0))

表2(进度)

=ARRAYFORMULA(A2:A&E2:E)

0
投票

如今,您的

SUMIFS
公式在
MAP
函数中运行良好,如下所示:

MAP
函数的工作方式类似于公司发票中的循环,为每张发票执行自定义函数
LAMBDA
。您的
SUMIFS
公式是此自定义函数的主体,需要稍作更改才能正常工作:它的条件
F8
与发票过滤器相关,需要替换为 lambda 中的发票输入参数,我将其命名为
 invoice
.

最后但同样重要的是,

MAP
函数本身适用于整列发票,即使是空白单元格。为避免这种行为,请将列引用包装在
ARRAY_CONSTRAIN
函数中,并设置要评估的所需行数和列数。在这种情况下,它是一列,可以使用
COUNTA
函数在整个发票列上计算行数。

图中显示的公式完成了上述所有解释。


-4
投票

您可以使用 SUMIFS 返回一个数组,例如在 L3

=SUMIFS(A3:A8,B3:B8,F3:F8,C3:C8,"A")

请注意,在通常需要单个条件的情况下,我使用了 F3:F8,因此公式返回所需的 6 个值数组

未经测试,因为我目前在我的 ipad 上,它似乎不喜欢谷歌文档....

© www.soinside.com 2019 - 2024. All rights reserved.