假设您有按开始日期和部门列出的员工列表。您想创建一个ARRAYFORMULA
来按月计算每个部门like in this sheet的总工资成本。这几个月将花费数年,因此想使用ARRAYFORMULA
。
正在寻找G2的ARRAYFORMULA,它将处理第二个月的所有销售行的计算。然后可以将该公式复制到G3和G4中,以处理其他部门。
您不能在SUMIFS
内使用QUERY
或ARRAYFORMULA
。由于您需要使用少于日期的日期来计算总数,因此不能将SUMIF
与复合键一起使用。我尝试在FILTER
内的SUMIF
内使用ARRAYFORMULA
,但似乎无法在FILTER
内使用SUMIF
。
是否有人建议创建一个ARRAYFORMULA
函数来处理仍然足够浓缩以进行管理的功能?
答案 0 :(得分:0)
就像我说的那样,很多事情令人困惑,但是您可以通过生成对角矩阵来实现
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1
并将其与常规数据透视查询的结果相乘,这样就得到了第一列,前两列的总和,前三列,等等。
=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)
))
这是否满足“足以管理的凝聚力”标准是另一回事。
替代
如果您可以在G,H,I等列中容忍一个单独的公式,这是另一种方法。我仍将使用查询,但问题是,如果某个部门不在特定日期范围内,则H,I列中的类别将少于G列中的类别,并且它们将不匹配起来经过深思熟虑的简单答案是,在输入查询之前将超出范围的值设置为零,这样对于G2,您就有了
=sort(unique(B2:B))
按字母顺序排列部门名称
然后在H2中
=ArrayFormula(query({$A:$C,$D:$D*($C:$C<=H1)},"select sum(Col4) where Col1 <>'' group by Col2 label sum(Col4) ''"))
然后将其拉入I,J等列中。
看看这是否适合您。
答案 1 :(得分:0)
尝试以下公式:
在{
"mythings": [
{
"name": "Name",
"subjects": ['x'],
"id": 2
}
],
}
中输入此ArrayFormula:
F1
然后将其复制到= ArrayFormula(IFERROR( INDEX( TRANSPOSE( $C$1:$C$14 ),
MATCH( 1, 1 + COUNTIF( E1:$E1, TRANSPOSE( $C$1:$C$14 ) ) + ( TRANSPOSE( $C$1:$C$14 ) = "" ), 0 ) ), "|" ))
在G1:K1
中输入此ArrayFormula:
F2
然后将其复制到= ArrayFormula(IFERROR( INDEX( $B$1:$B$14,
MATCH( 1, 1 + COUNTIF( F$1:F1, $B$1:$B$14 ) + ( $B$1:$B$14 = "" ), 0 ) ), "_" ))
:
在F3:F7
中输入以下标准公式:
G3
然后将其复制到=IF( OR( EXACT( G$1, "|" ), EXACT( $F3, "_" ) ), "",
SUMIFS( $D$1:$D$14, $B$1:$B$14, $F3, $C$1:$C$14, "<=" & G$1 ) )