PowerBI矩阵将小计替换为日均值并按均值配置条件格式
PowerBI 实现方案
步骤1:创建显示用度量值,替换原始聚合字段
假设你的源表包含字段:日期、产品分类(即示例中的p1/p2/p3所属字段)、Sales、Refund,先创建两个显示用度量值:
- 销售额显示度量值:
显示_销售额 = IF( ISINSCOPE('表'[产品分类]), // 判断当前行是否为产品明细行 SUM('表'[Sales]), // 明细行返回原始销售额求和 DIVIDE(SUM('表'[Sales]), DISTINCTCOUNT('表'[产品分类])) // 日期小计行返回当日销售额均值 )
- 退款额显示度量值:
显示_退款额 = IF( ISINSCOPE('表'[产品分类]), SUM('表'[Refund]), DIVIDE(SUM('表'[Refund]), DISTINCTCOUNT('表'[产品分类])) )
创建完成后,把矩阵中原有的Sales、Refund字段删除,替换为上述两个新建的度量值,此时日期行的小计值会自动变为当日平均值。
步骤2:创建条件格式判断用度量值
分别为两个指标创建标红判断逻辑:
- 销售额标红判断:
销售额_标红标记 = VAR 当日销售额均值 = CALCULATE( DIVIDE(SUM('表'[Sales]), DISTINCTCOUNT('表'[产品分类])), ALLSELECTED('表'[产品分类]) // 清除产品维度上下文,固定取当日均值 ) VAR 当前行销售额 = SUM('表'[Sales]) RETURN IF( NOT ISINSCOPE('表'[产品分类]), // 日期行不标红 0, IF(当前行销售额 < 当日销售额均值, 1, 0) )
- 退款额标红判断:
退款额_标红标记 = VAR 当日退款均值 = CALCULATE( DIVIDE(SUM('表'[Refund]), DISTINCTCOUNT('表'[产品分类])), ALLSELECTED('表'[产品分类]) ) VAR 当前行退款 = SUM('表'[Refund]) RETURN IF( NOT ISINSCOPE('表'[产品分类]), 0, IF(当前行退款 > 当日退款均值, 1, 0) )
步骤3:设置条件格式
- 选中矩阵中的
显示_销售额列,点击「条件格式」-「图标」 - 规则设置:格式样式选择「基于字段」,依据字段选择
销售额_标红标记,当值等于1时显示红色圆形图标,其余情况无图标,图标位置选择数据右侧即可 - 按照相同逻辑给
显示_退款额列配置基于退款额_标红标记的条件格式即可
如果你的矩阵行层级多于日期+产品两层,只需要调整ISINSCOPE函数内的字段为最细层级的行维度字段即可,公式逻辑无需修改。
内容的提问来源于stack exchange,提问作者alkanschtein
相关产品推荐
相关产品推荐

