Excel中按姓名统计周度、月度平均值的技术求助
解决方案:按姓名拆分周度/月度平均值
针对你需要在报表页第3、4行按姓名展示周度/月度平均值的需求,结合已有的V(周度)、W(月度)列数据,这里提供两种适配不同场景的公式方案:
场景1:V/W列是周期归属标识(如周数、月份数或「当前周」「当前月」文本)
假设你的日志数据源在「日志」工作表,其中:
- A列:填写日志的姓名
- C列:每日需要统计的核心数值(可替换为你的实际数据列)
- V列:每条记录的周度归属标记(比如用
WEEKNUM(TODAY())生成的当前周数,或固定文本「当前周」) - W列:每条记录的月度归属标记(比如用
MONTH(TODAY())生成的当前月份数,或固定文本「当前月」) - 报表页第2行(B2、C2、D2…):需要单独统计的各姓名
周度平均值(报表页第3行,对应B2的姓名)
在B3单元格输入以下公式,然后向右拉填充到其他姓名列:
=IFERROR(AVERAGEIFS(日志!$C:$C, 日志!$A:$A, B$2, 日志!$V:$V, WEEKNUM(TODAY())), 0)
如果V列用的是「当前周」这类文本标识,替换为:
=IFERROR(AVERAGEIFS(日志!$C:$C, 日志!$A:$A, B$2, 日志!$V:$V, "当前周"), 0)
月度平均值(报表页第4行,对应B2的姓名)
在B4单元格输入以下公式,向右拉填充:
=IFERROR(AVERAGEIFS(日志!$C:$C, 日志!$A:$A, B$2, 日志!$W:$W, MONTH(TODAY())), 0)
如果W列用的是「当前月」文本标识,替换为:
=IFERROR(AVERAGEIFS(日志!$C:$C, 日志!$A:$A, B$2, 日志!$W:$W, "当前月"), 0)
场景2:V/W列直接存储单条记录的周度/月度统计值
如果V列是单条日志对应的周度汇总值、W列是月度汇总值,需要按姓名计算这些值的平均,公式可以简化为:
周度平均值(B3)
=IFERROR(AVERAGEIF(日志!$A:$A, B$2, 日志!$V:$V), 0)
月度平均值(B4)
=IFERROR(AVERAGEIF(日志!$A:$A, B$2, 日志!$W:$W), 0)
关键细节说明
IFERROR函数:避免因某姓名无对应周期数据时出现#DIV/0!错误,你也可以把返回值0改成"-"这类占位文本- 单元格引用:
B$2锁定了行号,向右拉公式时会自动匹配C2、D2等不同姓名,无需手动修改 - 性能优化:如果你的日志数据有固定行范围(比如到1000行),建议用
日志!$C$2:$C$1000代替整列引用,提升表格计算速度
内容的提问来源于stack exchange,提问作者Ryan Hubbard
相关产品推荐
相关产品推荐

