求助:将Excel多条件平均公式转换为DAX公式(Power Query场景)
解决方案:DAX计算分组下符合条件的平均Compa-Ratio
一、添加到表中的计算列(对应原Excel公式逻辑)
如果需要直接在数据表中新增一列显示分组平均值,用以下DAX计算列公式:
= IF( AND( ISNUMBER([Compa Ratio]), [New Hire] = "New Hire" ), CALCULATE( AVERAGE('mytable'[Compa Ratio]), ALLEXCEPT('mytable', 'mytable'[Country and Job Code]), 'mytable'[New Hire] = "New Hire", ISNUMBER('mytable'[Compa Ratio]) ), "" )
关键说明:
ALLEXCEPT锁定当前行的Country and Job Code分组,确保只计算同一分组内的数据,解决你之前无法按分组计算的问题ISNUMBER同时排除空值和"no data"文本,满足你要求的有效Compa-Ratio条件- 外层
IF完全对应原Excel公式逻辑:仅当当前行是有效New Hire时显示分组平均值,否则返回空
二、用于报表的度量值(透视表/可视化场景)
如果是在Power BI或Excel数据透视表中使用,推荐用度量值,它会自动根据报表的分组上下文计算:
分组平均Compa-Ratio = CALCULATE( AVERAGE('mytable'[Compa Ratio]), 'mytable'[New Hire] = "New Hire", ISNUMBER('mytable'[Compa Ratio]) )
使用时只需将Country and Job Code拖到透视表的行/列区域,度量值会自动输出对应分组的平均值。
你之前尝试的问题原因:
你写的AVERAGEX+FILTER没有限定分组上下文,计算的是全表所有符合条件的New Hire的平均值,而非当前分组的。通过ALLEXCEPT(计算列)或利用度量值的自动上下文(报表场景),就能实现分组计算。
内容的提问来源于stack exchange,提问作者Kully
相关产品推荐
相关产品推荐

