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

在Power Query中使用M语言创建忽略空值的自定义百分比列的方法

在Power Query中用M语言实现忽略空值的列平均值计算

这个需求用M语言的列表函数就能轻松搞定,核心思路就是先把非空的数值筛选出来,再基于有效数据计算平均值,完美避开null的干扰。下面是具体的实现步骤和代码:

步骤1:添加自定义列

打开Power Query编辑器,选中你的数据表,点击顶部菜单栏的「添加列」→「自定义列」,在弹出的编辑框里输入以下M代码,同时把自定义列命名为% column:

let
    // 将当前行A、B、C列的值打包成列表,自动移除空值
    NonNullValues = List.RemoveNulls({[A], [B], [C]}),
    // 计算有效数值的总和
    Total = List.Sum(NonNullValues),
    // 统计有效数值的数量
    ValidCount = List.Count(NonNullValues),
    // 计算平均值,同时处理全空的情况(避免除以0报错)
    AverageResult = if ValidCount > 0 then Total / ValidCount else null
in
    AverageResult

代码细节解释

  • List.RemoveNulls({[A], [B], [C]}):这一步会把当前行的三个列值放进一个列表里,自动剔除所有null值。比如第2行C是null,得到的列表就是{[A], [B]};第3行A是null,得到的就是{[B], [C]},完全贴合你的需求场景。
  • List.Sum和List.Count:分别对筛选后的有效列表求和、计数,这两个函数本身就对null兼容,但我们提前移除null后结果会更精准。
  • 最后的条件判断:如果有效数值的数量大于0,就计算平均值;如果三个列全是null,就返回null(你也可以改成else 0,根据实际业务需求调整)。

效果验证

  • 当A、B、C都有值时,有效列表包含三个元素,结果就是(A+B+C)/3,符合你的基础计算逻辑。
  • 当某一列或两列为null时,有效列表自动排除空值,用剩下的数值计算平均值,完全匹配你提到的第2、3行的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:04:06