如何在Power BI中转换SUMPRODUCT公式?基于CI值计算最终得分
在Power BI中实现基于CI值的加权平均得分
先明确你原Excel公式的核心逻辑:只计算CI值大于0的行,用CI值乘以对应权重的总和,除以这些行的权重总和,得到加权平均得分。下面是Power BI中的两种实现方式:
方式1:创建度量值(推荐用于报表汇总)
度量值是Power BI中动态计算汇总值的最佳选择,会根据报表上下文自动调整计算范围:
最终得分 = VAR 有效权重总和 = CALCULATE(SUM('你的数据表名'[权重列名]), '你的数据表名'[CI列名] > 0) VAR 加权CI总和 = CALCULATE(SUMX('你的数据表名', '你的数据表名'[CI列名] * '你的数据表名'[权重列名]), '你的数据表名'[CI列名] > 0) RETURN DIVIDE(加权CI总和, 有效权重总和, 0)
- 替换代码中的
'你的数据表名'、[权重列名]、[CI列名]为你实际的表和列名称 DIVIDE是DAX的安全除法函数,避免分母为0时出错,最后一个参数0是无有效数据时的默认返回值,可根据需求改成BLANK()或其他值
方式2:创建计算列(仅需每行显示固定汇总得分时使用)
如果需要在数据表的每行都显示这个全局汇总得分,可以用计算列(不推荐用于超大型数据表,会增加内存占用):
最终得分_计算列 = VAR 有效权重总和 = CALCULATE(SUM('你的数据表名'[权重列名]), ALL('你的数据表名'), '你的数据表名'[CI列名] > 0) VAR 加权CI总和 = CALCULATE(SUMX('你的数据表名', '你的数据表名'[CI列名] * '你的数据表名'[权重列名]), ALL('你的数据表名'), '你的数据表名'[CI列名] > 0) RETURN DIVIDE(加权CI总和, 有效权重总和, 0)
ALL('你的数据表名')用于忽略当前行的上下文,确保计算的是整个表的有效数据总和
逻辑对应说明
CALCULATE(SUM(...), [CI]>0)对应Excel的SUMIF(H4:H20,">0",E4:E20),计算CI>0的权重总和SUMX(...)结合筛选条件,对应Excel的SUMPRODUCT(--(H4:H20>0),H4:H20,E4:E20),计算符合条件的CI×权重总和
内容的提问来源于stack exchange,提问作者user1002771
相关产品推荐
相关产品推荐

