Power Query M函数如何将含指定文本的单元格置空
Power Query M 实现指定列包含关键词置空方案
核心逻辑
直接对promotion-ids列做逐行值判断,只要单元格文本包含US Core shipping关键词,直接返回空值(null),其余值原样保留,不需要新增辅助列,处理效率更高。该逻辑可以覆盖所有带该关键词、后缀任意的单元格场景,比如你提到的US Core shipping A3JU1250912、US Core shipping A3JT982918这类值都会被命中置空。
可直接复用的M代码
打开高级编辑器,在你现有列处理步骤的后面新增如下转换步骤即可,注意把代码里的#"上一步骤名称"替换成你自己查询中前一个步骤的实际名称:
#"清空含指定关键词的促销ID" = Table.TransformColumns( #"上一步骤名称", { "promotion-ids", (currentCell) => // 先判断单元格是否为文本类型,避免空值/非文本值触发报错 if Value.Is(currentCell, type text) and Text.Contains(currentCell, "US Core shipping") then null else currentCell, type text } )
补充说明
- 不想手写高级编辑器代码的话,也可以走界面操作:选「转换」选项卡下的「自定义列」,输入上述判断逻辑生成新列后,删除原有
promotion-ids列,把新列重命名为原名即可,只是该方式会额外生成临时列,数据量较大时处理效率低于直接调用Table.TransformColumns的写法。 - 如果你的数据里存在关键词大小写不一致的情况(比如全小写、大小写混写的
us core shipping),可以把Text.Contains部分改成Text.Contains(currentCell, "US Core shipping", Comparer.OrdinalIgnoreCase),就能忽略大小写匹配所有命中的内容。 - 处理完成后可以对
promotion-ids列做一次文本筛选,输入US Core shipping验证,确认没有匹配值就说明处理完成。
内容的提问来源于stack exchange,提问作者Aiden Noh
相关产品推荐
相关产品推荐

