You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Query中根据另一列的值条件替换指定列取值

Power Query 按规则替换Trade列值实现方案

最优实现分两种,按需选择即可,两种方式性能都远高于逐行循环、多轮替换的方案,大表运行无压力。

方式1:纯界面操作(无需写代码,适合新手)

  • 第一步:点击Job_Reference列标题左侧的类型图标,将列类型修改为文本,避免数字类型取首字符时出现格式错误。
  • 第二步:点击顶部菜单栏「添加列」>「条件列」,按如下规则配置弹窗:
    • 新列名可自定义为Trade_New
    • 第一条规则:列选Job_Reference,运算符选「开头为」,值填2,输出填PLASTERER
    • 点击「添加规则」新增第二条:列选Job_Reference,运算符选「开头为」,值填3,输出填PAINTER
    • 「否则」规则下拉选择「选择列」> 选中Trade,即不满足前两个规则时保留原Trade值
  • 第三步:点击确定生成新列,核对数据无误后删除原Trade列,将新列重命名为Trade即可。

方式2:M公式直接改列(步骤最少,性能最优)

不需要新增列,直接修改原有Trade列,适合熟悉M公式的场景:

  1. 同样先把Job_Reference列转为文本类型
  2. 选中Trade列,点击顶部「转换」>「自定义转换」,在公式框输入如下代码:
let
    JobRefFirstChar = Text.Start([Job_Reference],1)
in
if JobRefFirstChar = "2" then "PLASTERER"
else if JobRefFirstChar = "3" then "PAINTER"
else [Trade]
  1. 点击确定即可直接完成原列修改。

如果需要直接在高级编辑器里修改,对应核心转换步骤的代码参考如下(将代码中#"上一步步骤名"替换为你自己查询里的实际步骤名即可):

#"修改Trade列" = Table.TransformColumns(#"上一步步骤名", {{"Trade", (currentTrade) =>
    let
        firstChar = Text.Start(Text.From([Job_Reference]),1)
    in
    if firstChar = "2" then "PLASTERER"
    else if firstChar = "3" then "PAINTER"
    else currentTrade, type text}})

注意点

  • 必须先将Job_Reference转为文本类型再做首字符判断:如果该列为数值类型,直接取首字符可能受数字格式、科学计数法影响出现判断错误。
  • 上述逻辑默认对所有行生效,如果你只需要处理原Trade值为PAINTER/PLASTERER的行,只需要在判断条件里加一层and List.Contains({"PAINTER","PLASTERER"}, [Trade])即可。

内容的提问来源于stack exchange,提问作者ItzCamm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:12:28