Google sheets 具有多个条件的数组公式和

Google sheets 具有多个条件的数组公式和,google-sheets,array-formulas,Google Sheets,Array Formulas,假设您有一份按开始日期和部门列出的员工列表。您需要创建一个数组来计算每个部门每月的总薪资成本。月份将持续数年,因此希望使用ARRAYFORMULA 正在查找G2的阵列公式,该公式将处理第2行(所有月份的销售部门)的计算。然后,该公式可以在G3和G4中复制,以处理其他部门 不能在ARRAYFORMULA中使用SUMIFS或QUERY。由于需要使用小于with dates来计算总数,因此不能使用组合键的SUMIF。我尝试在SUMIF的内部ARRAYFORMULA中使用FILTER,但看起来您无法在S

假设您有一份按开始日期和部门列出的员工列表。您需要创建一个
数组来计算每个部门每月的总薪资成本。月份将持续数年,因此希望使用
ARRAYFORMULA

正在查找G2的阵列公式,该公式将处理第2行(所有月份的销售部门)的计算。然后,该公式可以在G3和G4中复制,以处理其他部门

不能在
ARRAYFORMULA
中使用
SUMIFS
QUERY
。由于需要使用小于with dates来计算总数,因此不能使用组合键的
SUMIF
。我尝试在
SUMIF
的内部
ARRAYFORMULA
中使用
FILTER
,但看起来您无法在
SUMIF
内部使用
FILTER


有没有建议创建一个
ARRAYFORMULA
函数来处理这个仍然足够精简的问题

正如我所说,这是一个很大的骗局,但你可以通过生成一个对角矩阵来实现

1   1   1   1
0   1   1   1
0   0   1   1
0   0   0   1
然后将普通pivot查询的结果乘以它,得到第一列、前两列之和、前3列等等

=ArrayFormula(if(isnumber(query(A:D,"select B,sum(D) where B <> '' group by B pivot C",1)),
mmult(n(query(A:D,"select B,sum(D) where B <> '' group by B pivot C",1)),
if(column(indirect("A1:"&address(countunique(C:C),countunique(B:B))))>=row(indirect("A1:"&address(countunique(C:C),countunique(B:B)))),1,0)),
query(A:D,"select B,sum(D) where B <> '' group by B pivot C",1)
))
将部门名称按字母顺序排列

然后在H2中

=ArrayFormula(query({$A:$C,$D:$D*($C:$C<=H1)},"select sum(Col4) where Col1 <>'' group by Col2 label sum(Col4) ''"))
=ArrayFormula(查询({$A:$C,$D:$D*($C:$C尝试以下公式:

  • F1
    中输入此数组公式:
    =ArrayFormula(IFEROR(索引)(转置($C$1:$C$14),
    匹配(1,1+COUNTIF(E1:$E1,转置($C$1:$C$14))+(转置($C$1:$C$14)=“”),0)),“|”)

  • 然后将其复制到
    G1:K1

  • 在F2中输入此数组公式:
    =ArrayFormula(IFEROR)(索引($B$1:$B$14,
    匹配(1,1+COUNTIF(F$1:F1,$B$1:$B$14)+($B$1:$B$14=“”),0)),“”)

  • 然后将其复制到
    F3:F7

  • G3
    中输入此标准公式:
    =IF(或(精确(G$1,“|”)、精确($F3,“|”)、”,
    
    SUMIFS($D$1:$D$14,$B$1:$B$14,$F3,$C$1:$C$14),“查询不能在数组公式中使用。透视表不会“处理情况”和“如果"除非你有一个我看不到的想法,否则不能在范围内工作?事实上,我现在可以看到OP的点,因为他们想要一个累积的总数。很难看到你如何用数组公式来实现它。我可以通过将pivot查询结果乘以对角矩阵来实现这一点,但这将是一个很大的错误。哦,我不管怎样,我还是喜欢挑战。@I'-'我不确定你们指的是什么单元格,因为H9不在矩阵中。但我添加了矩阵结果应该是什么作为最终输出的示例。它是每个月的工资成本,所以若6月的工资是1,7月的另一个工资是1,7月的总工资成本将是2I帮助。是的,这是一个很难管理的问题。仍然在寻找更干净的东西。如果我们需要在H2,H3,H4中加入一个公式,这很好,因为我真的试图解决每个月不必复制几十次公式的问题。如果是这样的话,我可以建议一个替代方案-将它添加到我的答案中。谢谢@tom。这是一个常用的c我希望谷歌能在ARRAYFORMULA中加入一两个类似于SUMIFS的函数,这会让事情变得更简单。
    =ArrayFormula(query({$A:$C,$D:$D*($C:$C<=H1)},"select sum(Col4) where Col1 <>'' group by Col2 label sum(Col4) ''"))