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

PowerQuery嵌套筛选问题求助:按指定条件过滤数据集

PowerQuery 嵌套筛选的M代码修正

先把筛选规则拆明白:

  • 直接排除年龄是9或10的孩子
  • 年龄7岁的孩子里,只留班级是A或B的
  • 其他年龄(比如6、8岁这类)的孩子,只要不是9/10都保留(如果这是你要的效果;要是你只想要7岁A/B的,直接看后面的简化版)

你之前代码大概率踩的坑

多数情况是逻辑运算符用错了:

  • 没给「班级是A或B」的条件加括号,导致and/or优先级混乱,比如写成[年龄]=7 and [班级]="A" or [班级]="B",结果变成“7岁且A班,或者所有B班”,完全不符合要求
  • 没把「排除9/10」和「7岁A/B保留」的逻辑组合对,顾此失彼

修正后的M代码

假设你的数据源表叫源,下面两种写法都能用:

写法一:清晰的组合逻辑

= Table.SelectRows(
    源,
    each 
        ([年龄] <> 9 and [年龄] <> 10) 
        and 
        ([年龄] <> 7 or ([年龄] = 7 and ([班级] = "A" or [班级] = "B")))
)

写法二:更简洁的语法

用in来简化多值判断,代码更易读:

= Table.SelectRows(
    源,
    each 
        [年龄] not in {9, 10} 
        and 
        (if [年龄] = 7 then [班级] in {"A", "B"} else true)
)

如果你只想要7岁A/B的记录

要是其他年龄哪怕不是9/10也不想留,直接用这个极简版:

= Table.SelectRows(
    源,
    each [年龄] =7 and [班级] in {"A", "B"}
)

怎么验证对不对

  • 先查9岁、10岁的记录是不是全没了
  • 再看7岁的孩子里,只有A、B班的留下来了,其他班的7岁孩子被筛掉了
  • 要是需要保留其他年龄,确认6、8岁这类记录还在

内容的提问来源于stack exchange,提问作者Chandler Shores

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:01:21