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

Power BI动态将列名转为新表表头并统计非零行数

Power Query 动态统计各列非零行数解决方案

需求回顾

从筛选后的Table 1生成Table 2:

  • Type列:对应Table 1的列名
  • Total列:统计对应列的非零行数(非求和)
  • 需适配Table 1列的动态变化(比如后续筛选不同列)

错误原因分析

你之前的公式存在两个问题:

  • 无法直接通过#"Table 2"[Type]在计算列中引用当前行的Type值来定位原表列
  • List.NonNullCount是统计非空值,而非非零值,不符合需求

解决方案步骤

以下是完整的M语言实现,支持动态列适配:

  1. 确保已对Table 1完成列筛选操作,新建空白查询后输入代码:
let
    // 引用筛选后的原表
    Source = #"Table 1",
    // 动态获取当前表的所有列名(适配后续列变更)
    ColumnNames = Table.ColumnNames(Source),
    // 将列名转换为以Type为列名的表
    TypeTable = Table.FromList(ColumnNames, Splitter.SplitByNothing(), {"Type"}),
    // 添加Total列,统计对应列的非零行数
    AddTotalColumn = Table.AddColumn(TypeTable, "Total", each 
        List.Count(
            List.Select(
                Table.Column(Source, [Type]), 
                (value) => value <> 0
            )
        )
    )
in
    AddTotalColumn

关键逻辑说明

  • Table.ColumnNames(Source):自动获取Table 1筛选后的列名,后续列变更时无需修改代码
  • Table.Column(Source, [Type]):根据当前行的Type值,精准提取Table 1对应列的全部数据
  • List.Select(..., (value) => value <> 0):筛选出列中所有非零值
  • List.Count:统计筛选后的非零值数量,即目标非零行数

测试结果

用你提供的Table 1数据执行后,将得到预期结果:

TypeTotal
X1
Y2
Z0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:43:14