Power Query中基于另一列前缀替换列值的代码问题求助
问题定位与修复方案
核心错误:你代码里的
Text.Start(Text.From([Description]),1)只取了Description值的第一个字符,拿它和完整的"monthly_Total"比较,肯定永远匹配不上,这就是操作失败的根源。修正后的代码(推荐用
Text.StartsWith,更省心):
= Table.ReplaceValue(#"Renamed Columns", each [Category], each if Text.StartsWith(Text.From([Description]), "monthly_Total") then "Accounting Adjustments" else [Category], Replacer.ReplaceText,{"Category"})
- 要是非要用
Text.Start的话,得把第二个参数改成目标前缀的长度("monthly_Total"一共12个字符):
= Table.ReplaceValue(#"Renamed Columns", each [Category], each if Text.Start(Text.From([Description]),12) = "monthly_Total" then "Accounting Adjustments" else [Category], Replacer.ReplaceText,{"Category"})
- 额外提醒:如果Description列有空值或者非文本类型,最好加个空值判断避免报错:
each if [Description] <> null and Text.StartsWith(Text.From([Description]), "monthly_Total") then "Accounting Adjustments" else [Category]
要是前缀大小写可能不统一,还可以忽略大小写匹配:把Text.StartsWith改成Text.StartsWith(Text.From([Description]), "monthly_Total", Comparer.OrdinalIgnoreCase)
内容的提问来源于stack exchange,提问作者Kelley
相关产品推荐
相关产品推荐

