需要 SUMIFS 到 return 多行

Need SUMIFS to return multiple rows

我遇到的错误:

Function ARRAY_ROW parameter 2 has mismatched row size. Expected: 3. Actual: 1.

我想我知道为什么会出现此错误。正如您在下面的公式和 table 中所见,有三个月的数据。这将导致第一个数组出现三行。但是,SUMIFS 函数似乎只是 returning 一个数字。但是,我每个月都需要 return 一行。我怀疑错误中预计有 3 行,因为有三个月,如第一个数组 return 编辑的那样。我对这个错误的理解是否正确?

公式:

=ArrayFormula({{unique(text(A1:A,"MMM YY"))},
 {ABS(SUMIFS(C1:C,B1:B,G1,text(A1:A,"MMM YY"), unique(text(A1:A,"MMM YY"))))}})

注意:我使用的是整列,因此当添加更多数据时,该功能无需调整也能正常工作。

数据:

Date Category Payment
01/03/2021 Food
02/03/2021 Food
02/06/2021 Fee
03/03/2021 Food

G1Food

预期输出:

Jan 21
Feb 21
Mar 21

如何让 SUMIFS 每个月 return 新一行?我需要使用像 OFFSET 这样的函数吗?

您可以按月汇总付款,并使用使用 pivot 子句的 query() 公式在单独的列中显示每个类别的结果,如下所示:

=arrayformula( 
  query( 
    { A1:C, text(A1:A, "yyyy-mm") }, 
    "select Col4, sum(Col3) 
     where Col3 is not null 
     group by Col4 
     pivot Col2", 
    1 
  ) 
)

要仅显示单元格 G1 中指定的类别,请使用:

=arrayformula( 
  query( 
    { A1:C, text(A1:A, "yyyy-mm") }, 
    "select Col4, sum(Col3) 
     where Col2 = '" & G1 & "' 
     group by Col4 
     label sum(Col3) '" & G1 & "' ", 
    1 
  ) 
)

您可以使用 SUMIF + ARRAYFORMULA 代替 SUMIFS

=ArrayFormula(unique(if(A2:A<>"",{text(A2:A,"MMM YY"),sumif(text(A2:A,"MMM YY")&B2:B,text(A2:A,"MMM YY")&"Food",C2:C)},)))