Excel中如何仅对Code相同的产品项计算加权平均值?
同Code条目加权平均价格计算方案
你现有公式没有做Code匹配过滤,直接计算了Ingredients全表的加权平均,改完的公式直接贴到Products表Avg Price列的首个计算单元格(比如第二行的C2)就行,下拉就能批量计算:
=B2 * SUMPRODUCT((Ingredient!$A$1:$A$6=A2)*Ingredient!$D$1:$D$6, Ingredient!$C$1:$C$6)/SUMIF(Ingredient!$A$1:$A$6,A2,Ingredient!$C$1:$C$6)
公式逻辑拆解
- 所有引用的Ingredients表范围都加
$锁死,下拉填充的时候不会把引用范围带偏 (Ingredient!$A$1:$A$6=A2)是过滤条件:逐行判断Ingredients表的Code是否和当前Products行的Code一致,匹配返回1、不匹配返回0,相当于自动筛掉Code不一样的条目- 分子的SUMPRODUCT只会累加Code匹配行的「单价*权重」结果
- 分母把原来的全量SUM换成SUMIF,只统计Code匹配行的权重总和,和分子过滤规则完全一致,不会算错
- 如果你的Ingredients表实际数据不止6行,把公式里三个范围的行号改成你实际的表范围就行,别直接引用整列,会拖慢计算速度。
不需要用AVERAGEIFS,AVERAGEIFS只能计算无权重的算术平均值,没法满足加权计算的需求,上面的组合公式是最适配你现有表结构的方案。
参考表样
Ingredients表

Products表

内容的提问来源于stack exchange,提问作者RobertDev22
相关产品推荐
相关产品推荐

