如何用QUERY函数实现:C2为ALL时返回SiteLevel全部数据,否则按C2筛选?
解决QUERY函数根据C2动态筛选(含ALL返回全部)的问题
直接用下面的公式就能实现需求,核心是通过字符串拼接让WHERE子句动态适配C2的内容:
文本列筛选版本(如果要筛选的列是文本类型)
=QUERY(SiteLevel, "SELECT * WHERE '"&C2&"' = 'ALL' OR [你的筛选列表头] = '"&C2&"'", 1)
数值列筛选版本(如果要筛选的列是数字类型)
=QUERY(SiteLevel, "SELECT * WHERE '"&C2&"' = 'ALL' OR [你的筛选列表头] = "&C2&"", 1)
关键说明
- 把公式里的
[你的筛选列表头]替换成SiteLevel命名范围中实际要筛选的列的表头名称(比如你的列叫"站点等级"就直接写这个) - 逻辑很简单:当C2等于"ALL"时,第一个条件
'"&C2&"' = 'ALL'成立,OR后面的筛选条件会被直接跳过,返回所有行;当C2是具体筛选值时,第一个条件不生效,就执行后面的列匹配逻辑 - 最后面的
1表示你的SiteLevel数据包含表头,如果没有表头就改成0
之前用OR子句没成功,大概率是字符串拼接时的引号没处理对——文本值必须用单引号包裹在QUERY语句里,数值则不需要,这个细节很容易踩坑。
内容的提问来源于stack exchange,提问作者Katy Tarrant
相关产品推荐
相关产品推荐

