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

Power Query M公式验证列是否仅含小数及列值替换问题求助

解决Power Query替换Column4值的问题

问题分析

你的需求核心:

  • 当Column3包含Instant Payment BSF/MBK时,优先用Column5的小数替换Column4;若Column5不是小数,再用Column6的小数;两者都不满足则保留Column4原值
  • 原代码逻辑错误:Number.Mod([Column5],1)=0判断的是整数,和你要的“仅含小数”(非整数)完全相反;且未处理Column5/6可能不是数字类型的情况,容易触发报错

修正后的代码

= Table.ReplaceValue(#"Changed Type", each [Column4],
    each if Text.Contains([Column3], "Instant Payment BSF/MBK") then
        // 先校验Column5是数字且为小数
        if Value.Is([Column5], type number) and Number.Mod([Column5], 1) <> 0 then
            [Column5]
        // 再校验Column6是数字且为小数
        else if Value.Is([Column6], type number) and Number.Mod([Column6], 1) <> 0 then
            [Column6]
        // 都不满足则保留原Column4
        else
            [Column4]
    else
        [Column4],
    Replacer.ReplaceValue, {"Column4"})

关键调整说明

  • 反转判断逻辑:将Number.Mod(...,1)=0改为Number.Mod(...,1)<>0,精准识别非整数的小数
  • 增加类型校验:用Value.Is([ColumnX], type number)确保Column5/6是数字类型,避免非数字值引发的运行错误
  • 保留优先级:维持先Column5后Column6的替换顺序,符合需求设定

额外适配提示

如果Column5/6是文本格式的数字(比如带引号的小数),需要先转换为数字类型,可在判断逻辑中加入容错处理:

let
    Source = ...,
    #"Changed Type" = ...,
    #"Replace Column4" = Table.ReplaceValue(#"Changed Type", each [Column4],
        each if Text.Contains([Column3], "Instant Payment BSF/MBK") then
            let
                // 尝试将文本转为数字,失败则返回null
                col5Num = try Number.From([Column5]) otherwise null,
                col6Num = try Number.From([Column6]) otherwise null
            in
                if col5Num <> null and Number.Mod(col5Num, 1) <> 0 then
                    col5Num
                else if col6Num <> null and Number.Mod(col6Num, 1) <> 0 then
                    col6Num
                else
                    [Column4]
        else
            [Column4],
        Replacer.ReplaceValue, {"Column4"})
in
    #"Replace Column4"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:17:32