Google Sheets中带OR条件的SUM+FILTER函数取值异常排查
Google Sheets中SUM+FILTER带OR条件的取值问题修复
问题分析
你的两个公式都存在逻辑错误:
- 公式1:
=sum(filter(B:B,if(or(C:C="foo",C:C="bar"),A1>D1,A1<E1))
OR函数是聚合函数,直接和整列C:C运算会返回单个布尔值(而非逐行的数组结果),导致FILTER无法匹配到符合条件的行,因此无返回值。另外公式还缺失一个闭合括号。 - 公式2:
=sum(B:B,if(or(C:C="foo",C:C="bar"),A1>D1,A1<E1))
SUM函数的第二个参数是单个值(OR返回的单布尔值转成的0/1),本质是计算SUM(B:B)加上这个值,自然会忽略逐行的条件判断。
你的核心需求是:
- 当C列值为
foo时,判断对应行A列 > D列 - 当C列值为
bar时,判断对应行A列 < E列 - 对满足上述任一条件的B列值求和,预期结果为6
正确公式写法
方法1:FILTER+数组逻辑(推荐)
=SUM(FILTER(B:B, (C:C="foo")*(A:A>D:D) + (C:C="bar")*(A:A<E:E)))
逻辑说明:
(C:C="foo")*(A:A>D:D):逐行判断「C是foo且A>D」,成立返回1,否则0(C:C="bar")*(A:A<E:E):逐行判断「C是bar且A<E」,成立返回1,否则0- 加号
+表示OR逻辑,只要其中一组条件成立,结果就为1,FILTER会筛选出这些行的B列值,最后SUM求和
方法2:SUMIFS拆分求和
如果不习惯数组逻辑,也可以拆分条件用SUMIFS叠加:
=SUMIFS(B:B,C:C,"foo",A:A,">"&D:D) + SUMIFS(B:B,C:C,"bar",A:A,"<"&E:E)
分别计算符合foo条件的和、符合bar条件的和,再相加得到最终结果。
验证结果
代入你的表格数据:
| 行号 | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Jan1 | 1 | foo | Jan2 | Jan3 |
| 2 | Jan2 | 1 | foo | Jan2 | Jan3 |
| 3 | Jan7 | 3 | bar | Jan4 | Jan9 |
| 4 | Jan7 | 3 | bar | Jan5 | Jan9 |
两个公式都会返回6,完全符合预期。
内容的提问来源于stack exchange,提问作者google geek
相关产品推荐
相关产品推荐

