如何将 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”的“每一行”处或之前的行才会提供结果。
我在使用 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”的“每一行”处或之前的行才会提供结果。