如何将 sumif 与 arrayformula 一起使用?

How to use sumif with arrayformula?

我在使用 arrayformula 时遇到问题。

我在 A 列和 B 列有一些数据,SUMIF($A$2:$A2,"ABC",$B$2:$B2) 工作得很好,但我想使用 arrayformula,所以我不'不得不拖下公式。

但是使用 ArrayFormula(SUMIF($A$2:$A2,$C$1,$B$2:$B2)) 根本没有任何作用,有什么方法可以让它工作吗?我不知道怎么办。

在 E2 尝试:

=INDEX(IF(A2:A="ABC",MMULT(1*TRANSPOSE(IF((TRANSPOSE(ROW(
 INDIRECT("A2:A"&MAX(ROW(A2:A)*(A2:A<>"")))))>=ROW(
 INDIRECT("A2:A"&MAX(ROW(A2:A)*(A2:A<>"")))))*(
 INDIRECT("A2:A"&MAX(ROW(A2:A)*(A2:A<>"")))=TRANSPOSE(
 INDIRECT("A2:A"&MAX(ROW(A2:A)*(A2:A<>""))))), 
 INDIRECT("B2:B"&MAX(ROW(A2:A)*(A2:A<>""))), 0)), ROW(
 INDIRECT("A2:A"&MAX(ROW(A2:A)*(A2:A<>""))))^0),))

这是另一个选项(例如,在 E2 中):

=ArrayFormula(IF(A2:A="",,SUMIF(ROW(A2:A)*IF(A2:A="ABC",1,9^9),"<="&ROW(A2:A),B2:B)))

工作原理:

IF(A2:A="",, 表示“如果 A2:A 中的一行为空白,则对该行不执行任何操作。”

ROW(A2:A)*IF(A2:A="ABC",1,9^9) 将根据每一行的行号创建一个数字:对于匹配“ABC”的行,行号本身乘以 1(再次产生行号,因为任何乘以 1 的都是它本身) 或乘以 9^9(即一些巨大的数字,这将是所有 不是 "ABC" 的行的结果)。

这将与条件 "<="&ROW(A2:A) 匹配。因此,只有匹配“ABC”的“每一行”处或之前的行才会提供结果。