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

Google Sheets数组公式需求:计算同名数据加权总分并自动扩展

Google Sheets 自动计算加权得分的数组公式方案

需求回顾

对同名数据先计算平均分,再按以下规则加权:

  • Dance 得分 ×3
  • Jump 得分 ×2
    公式需支持自动纳入新增数据行,最终输出每个姓名的:记录数、加权Dance得分、加权Jump得分

方案1:灵活扩展的动态数组公式(推荐)

假设原数据位于A:C列(A=姓名,B=原始Dance得分,C=原始Jump得分),在结果区域的首行下方输入以下公式,它会自动溢出所有结果并适配新增行:

=LET(
    names, A2:INDEX(A:A, COUNTA(A:A)),
    dance_raw, B2:INDEX(B:B, COUNTA(A:A)),
    jump_raw, C2:INDEX(C:C, COUNTA(A:A)),
    unique_names, UNIQUE(names),
    BYROW(unique_names, LAMBDA(name,
        LET(
            filtered_dance, FILTER(dance_raw, names=name),
            filtered_jump, FILTER(jump_raw, names=name),
            record_count, COUNTA(filtered_dance),
            avg_dance, AVERAGE(filtered_dance),
            avg_jump, AVERAGE(filtered_jump),
            weighted_dance, avg_dance*3,
            weighted_jump, avg_jump*2,
            HSTACK(name, record_count, weighted_dance, weighted_jump)
        )
    ))
)

公式说明

  • A2:INDEX(A:A, COUNTA(A:A)):自动抓取从第2行到最后一个非空行的数据,新增行时无需手动调整区域
  • UNIQUE(names):提取所有不重复的姓名
  • BYROW+LAMBDA:对每个姓名单独执行「过滤数据→统计数量→求平均→加权」的完整流程
  • HSTACK:将计算结果组合为一行,自动溢出到右侧列

方案2:简洁的QUERY函数方案

如果需求简单,也可以用QUERY快速实现,自带表头处理:

=QUERY(A:C, "SELECT A, COUNT(A), AVG(B)*3, AVG(C)*2 WHERE A IS NOT NULL GROUP BY A LABEL COUNT(A)'记录数', AVG(B)*3'加权Dance得分', AVG(C)*2'加权Jump得分'", 1)

公式说明

  • GROUP BY A:按姓名分组计算
  • AVG(B)*3:直接对分组后的Dance得分求平均并乘以权重
  • WHERE A IS NOT NULL:自动忽略空行,新增有效数据行时会自动纳入计算
  • 最后的1表示原数据第1行是表头,QUERY会自动替换为指定的新表头

验证示例

以Ali的数据为例:

  • 原始Dance得分:4、6 → 平均分5 → 加权后5×3=15
  • 原始Jump得分:8、8 → 平均分8 → 加权后8×2=16
  • 记录数:2
    两个公式都会输出符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:57:36