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

如何用DAX度量值获取数据透视表中每行的列总计?

实现DAX行级列总计度量值(适配动态筛选)

核心需求

创建DAX度量值,计算数据透视表每行的列总计,要求:

  • 适配用户任意选择的列筛选(仅计算选中列的总和)
  • 保留行筛选与页筛选的上下文

问题分析

直接使用ALL会移除列字段的所有筛选(包括用户的全局列筛选),导致计算所有列的总和;单独使用ALLSELECTED会清除行/列/页的所有筛选,得到全局总计,无法实现行级计算。

解决方案

通过保留行/页筛选上下文 + 替换列筛选为用户选中的所有列值实现需求。以下是具体实现:

步骤1:创建基础度量

先定义核心计算的基础度量(以销售额为例):

销售额 = SUM('销售数据'[金额])

步骤2:创建行级列总计度量

假设:

  • 行区域字段:产品(可替换为你的行字段,多个字段则依次添加)
  • 页区域字段:区域(可替换为你的页字段,多个字段则依次添加)
  • 列区域字段:年份(可替换为你的列字段,多个字段则全部列在ALLSELECTED中)

度量值代码:

行级列总计 = 
CALCULATE(
    [销售额],
    -- 锁定当前行的筛选上下文
    VALUES('销售数据'[产品]),
    -- 锁定当前页的筛选上下文
    VALUES('销售数据'[区域]),
    -- 替换列筛选为用户选中的所有列值,移除当前单元格的单个列筛选
    ALLSELECTED('销售数据'[年份])
)

代码说明

  • VALUES('表'[字段]):获取当前行/页的筛选值,确保计算范围仅包含该行/页的数据
  • ALLSELECTED('表'[列字段]):获取用户在列区域选中的所有值,移除当前单元格的单个列筛选,仅计算选中列的总和

多字段适配

如果行/列/页区域有多个字段,只需扩展对应部分:

行级列总计 = 
CALCULATE(
    [销售额],
    -- 多个行字段
    VALUES('销售数据'[产品类别]),
    VALUES('销售数据'[产品名称]),
    -- 多个页字段
    VALUES('销售数据'[区域]),
    VALUES('销售数据'[渠道]),
    -- 多个列字段
    ALLSELECTED('销售数据'[年份], '销售数据'[季度])
)

效果验证

将该度量值拖入数据透视表的值区域后:

  • 调整列筛选(如只选2022、2023年),行总计会自动计算选中列的总和
  • 调整行筛选(如只选某类产品),行总计仅包含筛选后的行数据
  • 调整页筛选(如只选某区域),行总计仅包含筛选后的页数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:12:47