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

Excel如何按编码分组自动批量计算各编码对应加权平均值

按编码分组批量计算加权平均值公式方案

问题场景

  • 数据表计算规则:条目名称存在差异时,只要编码相同,即归入同组计算加权平均值
  • 现有公式=SUMPRODUCT(IF(B2:B6=B2,C2:C6*D2:D6))仅支持单个指定编码的加权值计算,将匹配值从单个单元格B2替换为全列编码范围B2:B6后返回#N/A错误,无法批量输出全量编码结果
  • 需求:可复用公式,选中编码列表后自动输出每个编码对应的加权平均值

可用公式

公式默认B列为编码列、C列为待计算数值列、D列为权重列,实际使用时替换为自身表格的实际范围即可,无需额外手动分组,会自动匹配相同编码的所有行纳入计算,不受条目名称差异影响。

动态数组版本(Excel 365/2021及以上)

在结果列首个单元格输入以下公式,回车后自动溢出所有结果,无需手动下拉:

  • 若需要按不重复编码输出分组结果:
=SUMPRODUCT((B2:B6=TRANSPOSE(UNIQUE(B2:B6)))*C2:C6*D2:D6)/SUMIF(B2:B6,UNIQUE(B2:B6),D2:D6)
  • 若需要和原表行顺序保持一致,逐行输出当前行编码对应的加权平均值:
=SUMPRODUCT((B2:B6=TRANSPOSE(B2:B6))*C2:C6*D2:D6)/SUMIF(B2:B6,B2:B6,D2:D6)

公式逻辑:通过TRANSPOSE将目标编码范围转置为横向数组,和纵向原始数据做矩阵匹配,批量计算每个编码对应的「数值*权重」乘积和,再除以对应编码的权重总和,得到最终加权平均值。

兼容版本(Excel 2019及更早无动态数组支持版本)

在结果列首个单元格输入以下公式,按下Ctrl+Shift+Enter确认数组公式后,下拉填充到所有结果行即可:

=SUMPRODUCT(($B$2:$B$6=B2)*$C$2:$C$6*$D$2:$D$6)/SUMIF($B$2:$B$6,B2,$D$2:$D$6)

注意:原始数据范围需添加$锁定为绝对引用,避免下拉填充时引用范围偏移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:39:14