Power Query中数字字段用Text.StartsWith替换值失败的解决问询
解决Power Query中Table.ReplaceValue因数字字段不生效的问题
你的推测完全正确,问题核心就是**[Account No]是数字类型**。虽然Table.AddColumn里的Text.StartsWith能通过隐式转换识别数字,但Table.ReplaceValue的参数逻辑不支持这种隐式转换,导致判断条件失效。
两种可行解决方案:
方案1:先将数字列转为文本类型
先添加字段类型转换步骤,把[Account No]从数字转成文本:
= Table.TransformColumns(#"Custom1", {{"Account No", Text.From, type text}})
之后再执行你原本的Table.ReplaceValue步骤,此时Text.StartsWith就能正确匹配以"4"开头的账号。
方案2:在判断逻辑中直接转换数字为文本
无需单独转换列类型,直接在Table.ReplaceValue的判断表达式里用Text.From把数字转成文本:
= Table.ReplaceValue( #"Custom1", each [Sign], each if Text.StartsWith(Text.From([Account No]), "4") then -1 else [Sign], Replacer.ReplaceText,{"Sign"} )
补充说明
Table.AddColumn能生效是因为单行列表达式的计算逻辑允许Power Query自动将数字隐式转为文本;但Table.ReplaceValue的参数处理机制更严格,必须显式转换数字为文本,才能让Text.StartsWith的字符串匹配逻辑正常工作。
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

