Power Query能否用单行代码批量替换列中多个不同值?
Power Query 批量替换单元格内多个文本的解决方案
你的原代码失效原因很明确:Table.ReplaceValue搭配Replacer.ReplaceText时,第二个参数传列表是无效的——它只会尝试将整个单元格文本与列表中的值完全匹配,而你的单元格是分号分隔的多内容组合(比如Manutenção;Meta 5;Detalhamento Gov. Ferramentas),自然匹配不上,所以替换没效果。
给你两种可行的解决方法:
方法1:用List.Accumulate循环调用替换
通过遍历要替换的文本列表,对每一个目标文本单独执行替换操作:
= List.Accumulate( {"Detalhamento Gov.Ferramentas", "Manutenção"}, #"Tipo Alterado", (当前表, 要替换的文本) => Table.ReplaceValue(当前表, 要替换的文本, "", Replacer.ReplaceText, {"Rótulos"}) )
方法2:针对单元格内容逐个替换(推荐)
直接在每个单元格内批量替换目标文本,还能顺便清理替换后多余的分号:
= Table.TransformColumns(#"Tipo Alterado", { {"Rótulos", each let 替换列表 = {"Detalhamento Gov.Ferramentas", "Manutenção"}, 替换后文本 = List.Accumulate(替换列表, _, (当前文本, 目标项) => Text.Replace(当前文本, 目标项, "")) in // 清理替换后可能出现的多余分号(比如开头、结尾或连续分号) Text.Trim(Text.Replace(替换后文本, ";;", ";"), ";") } })
两种方法都能实现你要的「批量替换不同文本为空」的需求,方法2更适合处理这种多内容拼接的单元格场景,还能优化最终的文本格式。
内容的提问来源于stack exchange,提问作者Leonerd_Ravaglia
相关产品推荐
相关产品推荐

