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

Power Query中批量替换检测限数值并执行除以2运算

批量处理Power Query中检测限以下数值(<#格式)的方案

针对你需要批量处理<#格式数值(转为数值/2)且不想硬编码列名的需求,提供以下Power Query M代码方案:

核心思路

  1. 定义通用处理函数,自动识别并转换<#格式的值
  2. 排除无需处理的文本列,批量将函数应用到目标列

完整代码

let
    // 定义单个值的处理逻辑:识别<开头的数值并除以2,其他值尝试转为数字
    ProcessLimitValue = (input as any) as any =>
        let
            textInput = Text.From(input),
            isBelowLimit = Text.StartsWith(textInput, "<"),
            processedValue = if isBelowLimit 
                            then Number.From(Text.Middle(textInput, 1)) / 2 
                            else try Number.From(textInput) otherwise input
        in
            processedValue,
    
    // 指定无需处理的文本列,剩余列自动作为处理目标
    ExcludeColumns = {"Batch_ID", "Type", "Sample ID"},
    TargetColumns = List.RemoveItems(Table.ColumnNames(#"Renamed Columns"), ExcludeColumns),
    
    // 批量转换所有目标列
    FinalTable = Table.TransformColumns(#"Renamed Columns", List.Transform(TargetColumns, each {_, ProcessLimitValue}))
in
    FinalTable

代码说明

  • ProcessLimitValue函数:
    • 将输入值转为文本,判断是否以<开头
    • 若是检测限以下的值,提取<后的数字并除以2
    • 若不是,尝试将值转为数字格式(非数值内容会保留原格式)
  • TargetColumns:通过排除已知文本列,自动获取所有需要处理的列,避免硬编码大量列名
  • Table.TransformColumns:批量对目标列应用处理函数,实现一次性转换

扩展方案(自动筛选数值列)

如果不确定哪些列需要处理,可以通过列类型自动筛选:

let
    ProcessLimitValue = (input as any) as any =>
        let
            textInput = Text.From(input),
            isBelowLimit = Text.StartsWith(textInput, "<"),
            processedValue = if isBelowLimit 
                            then Number.From(Text.Middle(textInput, 1)) / 2 
                            else try Number.From(textInput) otherwise input
        in
            processedValue,
    
    // 筛选类型为文本或数值的列(适配当前可能为文本的数值列)
    TargetColumns = List.Select(Table.ColumnNames(#"Renamed Columns"), 
        each let colType = Table.Schema(#"Renamed Columns"){[Name=_]}[Type]
             in colType = type text or colType = type number),
    
    FinalTable = Table.TransformColumns(#"Renamed Columns", List.Transform(TargetColumns, each {_, ProcessLimitValue}))
in
    FinalTable

内容的提问来源于stack exchange,提问作者Túlio H. R.R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:50:25