You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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条件的和,再相加得到最终结果。

验证结果

代入你的表格数据:

行号ABCDE
1Jan11fooJan2Jan3
2Jan21fooJan2Jan3
3Jan73barJan4Jan9
4Jan73barJan5Jan9

两个公式都会返回6,完全符合预期。

内容的提问来源于stack exchange,提问作者google geek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:25:05