Google Sheets QUERY函数筛选今日之后赛事数据失效问题求助
问题排查与解决方案
看起来你的问题核心出在逻辑运算符的优先级上!我来帮你拆解和修正:
问题根源
你当前使用的QUERY公式:
=query(Games!A:Y, "where A > date '"&TEXT(TODAY(),"yyyy-mm-dd")&"' and (F = 'Football') or (F = 'Rugby')",1)
在SQL逻辑中,AND的优先级高于OR,所以这个公式实际执行的逻辑是:(A > 今日日期 AND F='Football') OR F='Rugby'
这就意味着:所有橄榄球赛事(不管日期是否过期)都会被筛选出来,这就是你看到“无法隐藏今日之前赛事”的原因——过期的橄榄球赛事被OR条件直接保留了。
修正后的公式
把赛事类型的条件整体用括号包裹,确保日期条件和赛事类型条件是同时满足的关系:
=query(Games!A:Y, "where A > date '"&TEXT(TODAY(),"yyyy-mm-dd")&"' and (F = 'Football' or F = 'Rugby')",1)
这个公式的逻辑是:A > 今日日期 AND (F='Football' OR F='Rugby')
只有同时满足「日期在今日之后」和「是足球/橄榄球赛事」的条目才会被保留,过期的赛事自然会被过滤。
额外排查建议
- 确认A列是日期格式:选中Games表的A列,右键→「设置单元格格式」→选择「日期」,确保单元格存储的是日期值,而非看起来像日期的文本(文本格式的日期无法和
date 'yyyy-mm-dd'做正确的比较)。 - 固定日期测试:可以暂时把
TODAY()换成一个固定日期(比如date '2024-05-20'),验证筛选结果是否符合预期,排除TODAY()函数的潜在问题。
内容的提问来源于stack exchange,提问作者jaqk5
相关产品推荐
相关产品推荐

