在ArrayFormula中使用AND

时间:2017-06-01 16:54:40

标签: google-sheets spreadsheet

当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(

Example Data on Google Sheets

由于

1 个答案:

答案 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))