Power Query中基于另一列用M语言替换列值问题求助
问题修复方案
你的M代码存在两处核心逻辑错误:
- 错误使用布尔表达式
[TIPO USUARIO] = "Especial"(这是判断语句而非赋值操作) - 替换逻辑不符合需求(你需要保留目标列原数值,而非替换为SERVICIO列的值)
正确写法一:用Table.ReplaceValue直接修正
调整参数逻辑,当SERVICIO为"Especial"时,将TIPO DE USUARIO替换为"Especial",否则保留原列值:
= Table.ReplaceValue( #"Renamed Columns", each [TIPO DE USUARIO], // 目标列当前值 each if [SERVICIO] = "Especial" then "Especial" else [TIPO DE USUARIO], // 替换规则 Replacer.ReplaceValue, {"TIPO DE USUARIO"} // 作用的目标列 )
正确写法二:用Table.AddColumn(逻辑更直观)
先新增符合规则的列,再替换原列,可读性更强:
= Table.RenameColumns( Table.RemoveColumns( Table.AddColumn( #"Renamed Columns", "TIPO DE USUARIO_New", each if [SERVICIO] = "Especial" then "Especial" else [TIPO DE USUARIO] ), {"TIPO DE USUARIO"} ), {{"TIPO DE USUARIO_New", "TIPO DE USUARIO"}} )
验证步骤
- 替换代码后点击Close & Apply
- 检查SERVICIO列为"Especial"的行,确认TIPO DE USUARIO列已更新为目标值
内容的提问来源于stack exchange,提问作者Carlos Moreno
相关产品推荐
相关产品推荐

