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) ''"))