PowerQuery多条件文本替换问题:Amber匹配失效求助
解决Power Query中RAG文本替换的问题
我帮你找出问题啦!你的代码里有个小语法错误——在第二个if判断前多写了一个each,这导致Amber的替换逻辑根本没被正确执行。Power Query的each是用来封装整个判断函数的,嵌套的if不需要再额外加each。
修正后的基础代码
= Table.ReplaceValue( #"Reordered Columns", each [RAGQuality], each if [RAGQuality] = "No Significant Issues [Green]" then "G" else if [RAGQuality] = "Significant Issues [Amber]" then "A" else [RAGQuality], Replacer.ReplaceText, {"RAGQuality"} )
更易维护的优化写法
如果后续还要添加Red这类新的RAG规则,用List.ReplaceMatchingItems会更清晰,也方便后续扩展:
= Table.TransformColumns( #"Reordered Columns", { "RAGQuality", (text) => List.ReplaceMatchingItems( {text}, { {"No Significant Issues [Green]", "G"}, {"Significant Issues [Amber]", "A"} // 后续加新规则直接在这里加一行就行 } ){0} } )
要是你用的是较新版本的Power Query(支持switch语法),还能写出更简洁的逻辑:
= Table.TransformColumns( #"Reordered Columns", { "RAGQuality", (text) => switch text case "No Significant Issues [Green]" => "G" case "Significant Issues [Amber]" => "A" default => text } )
额外提醒
一定要确保匹配的文本完全一致,包括空格、括号和大小写——比如检查Amber对应的原始描述,是不是真的和你写的"Significant Issues [Amber]"没有任何差异(比如有没有多余的空格、大小写写错)。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

