如何使 ARRAYFORMULA 与 SUMIFS 一起工作?

How to make ARRAYFORMULA work with SUMIFS?

我有一个可以正常工作的 SUMIFS 公式,但我必须将它向下拖动以填充每一列,这对于我在传播中的数据量来说是非常不切实际的sheet,因此我想把它变成一个 ARRAYFORMULA。该公式应该计算一个月内购买了多少产品。目前看起来像这样:

=SUMIFS(All!$N:$N, All!$AG:$AG, ">=1/1/2018", All!$AG:$AG, "<=31/1/2018", All!$L:$L, $A2)

All!N 包含客户购买的商品数量,All!AG 包含日期,All!L 包含根据列 [=] 中的产品代码检查的产品代码17=].

我试着简单地做

=ARRAYFORMULA(SUMIFS(All!$N:$N, All!$AG:$AG, ">=1/1/2018", All!$AG:$AG, "<=31/1/2018", All!$L:$L, $A:$A))

但这仅适用于单元格 A2 - 它仅打印与其他公式相同的结果并且不会在列中继续,这正是我希望它做的。该解决方案适用于我的 SUMIF 公式(它做同样的事情但不检查日期)但不适用于 SUMIFS。我不确定为什么,而且我不是最擅长解决这些传播sheet 公式的人,所以我希望有人能提供帮助。

更新:这是一个显示问题的虚拟 sheet:https://docs.google.com/spreadsheets/d/1pX-icbJxmy8A0jhKLnSRxhZTLRgYFG_iU2BOQrseCCg/edit?usp=sharing

粘贴到 B2 单元格:

=ARRAYFORMULA(IF(LEN($A:$A), IFERROR(VLOOKUP($A:$A, 
 QUERY({All!$B:$D}, 
 "select Col1, sum(Col2) 
  where Col3 is not null 
  group by Col1 
  label sum(Col2)''", 0), 2, 0), 0), ))

粘贴到 C2 单元格并向右拖动:

=ARRAYFORMULA(IF(LEN($A:$A), IFERROR(VLOOKUP($A:$A, 
 QUERY({All!$B:$D}, 
 "select Col1, sum(Col2) 
  where Col3 >= date '"&TEXT(        C,     "yyyy-mm-dd")&"' 
    and Col3 <= date '"&TEXT(EOMONTH(C, 0), "yyyy-mm-dd")&"' 
  group by Col1 
  label sum(Col2)''", 0), 2, 0), 0), ))

spreadsheet demo