当A列是2的倍数且小于10时,我想对B列中的值求和。
如果我使用AND(
,如果这给出了#N / A.
=sum(filter(B:B,and(MOD(A:A,2)=0,VALUE(A:A)<10)))
公式单独起作用:
=sum(filter(B:B,VALUE(A:A)<10))
=sum(filter(B:B,MOD(A:A,2)=0))
这样可行,但嵌套的if和数组公式不够优雅:
=arrayformula(SUM(IF(MOD(A:A,2)=0,IF(VALUE(A:A)<10,B:B,0))))
我也尝试使用=sumif(
,但我无法让它工作
你知道如何更好地做到这一点吗?
编辑:
对不起,我不得不更新我的问题,以明确我在检查中需要两个单独的逻辑操作。
谢谢汤姆夏普告诉我=sum(filter(
由于
答案 0 :(得分:1)
我会用
=sum(filter(B:B,mod(A:A,6)=0))
但是如果mod 2和mod 3只是示例而且我太过于字面意思,你可以将条件组合如下
=sum(filter(B:B,mod(A:A,2)=0,mod(A:A,3)=0))
@Max Makhrov是正确的,原始帖子中的公式实际上等同于
=sum(filter(B:B,mod(A:A,2)=0,mod(A:A,3)<>0))
匹配偶数而不是三的倍数,即2,4,8,10 ....
对于您的新示例,您不要将AND放入,因为它已经暗示过滤器中的每个条件都与其他条件进行AND运算。并没有在这种上下文中工作(它试图将所有元素组合在一起而不是将它们视为两个数组)。所以它应该是
=sum(filter(B:B,MOD(A:A,2)=0,VALUE(A:A)<10))
但除非有些数字被格式化为文本,否则不应该使用VALUE
=sum(filter(B:B,MOD(A:A,2)=0,A:A<10))
如果您想让原始数组公式正常工作,则需要将AND替换为*。这是有效的,因为在算术表达式中使用TRUE时,TRUE等于值1和FALSE,值为0
=arrayformula(SUM((MOD(A2:A,2)=0)*(VALUE(A2:A)<10)*B2:B,0))