答案1
您可以尝试使用以下公式,而不是使用SUMIFS()
use SUMPRODUCT()
,因为要使其SUMIFS()
工作,需要额外的函数,因为当每个范围具有相同数量的行和列时,它将处理范围。第二种方法显示了如何使用SUMIFS()
+INDEX()
函数MATCH()
。下面显示的公式应该有效。
使用SUMPRODUCT()
和LOOKUP()
函数之一criteria
• 单元格中使用的公式H3
=SUMPRODUCT(
(H$2 = $C$2:$E$2) *
($G3 = $A$3:$A$14) *
(
LOOKUP(
2,
1 /
(
$H$1:H$1 <>
""
),
$H$1:H$1
) = $B$3:$B$14
) * $C$3:$E$14
)
或者,SUMIFS()
使用INDEX()
+MATCH()
函数sum_range
• 单元格中使用的公式H3
=SUMIFS(
INDEX(
$C$3:$E$14,
,
MATCH(
H$2,
$C$2:$E$2,
0
)
),
$A$3:$A$14, $G3,
$B$3:$B$14, LOOKUP(
2,
1 / ($H$1:H$1 <> ""),
$H$1:H$1
)
)
根据您的需要相应地更改单元格引用和范围。上面显示的公式都需要向下填充和向右填充。
如果您正在使用MS365
,请尝试使用MAKEARRAY()
函数通过一个动态数组公式溢出输出:
=LET(
_Months, G3:G14,
_Header1, H2:S2,
_Header2, SCAN(,H1:S1,LAMBDA(x,y,IF(y="",x,y))),
_Rows, ROWS(_Months),
_Columns, COLUMNS(_Header1),
MAKEARRAY(_Rows,_Columns,LAMBDA(r,c,
SUMIFS(INDEX(C3:E14,,XMATCH(INDEX(_Header1,c),C2:E2)),A3:A14,
INDEX(_Months,r),B3:B14,INDEX(_Header2,,c)))))