如何用Excel AverageIf函数计算多列周一销售额的总平均值?
这问题我之前也碰到过!AVERAGEIF在处理多列的average_range时确实有坑——它只会默认计算和range对应的第一列数据,所以你的公式只算出了三月(B列)的周一平均值。给你几个靠谱的解决办法:
解决方法
方法1:数组公式(简洁直观,推荐给新版Excel用户)
如果你用的是Excel 365/2021或更新版本,直接输入这个公式即可:
=AVERAGE(IF(A2:A200=1,B2:C200))
要是用的是2019及更早的旧版Excel,输入完公式后需要按下 Ctrl+Shift+Enter 来触发数组计算。
原理
IF(A2:A200=1,B2:C200)会筛选出所有周一对应的三月(B列)和四月(C列)销售额,AVERAGE函数会自动忽略非数值结果,直接计算所有符合条件的销售额的平均值。
方法2:SUMPRODUCT函数(兼容性拉满,全版本通用)
这个方法适合所有Excel版本,不需要按组合键,直接输入就行:
=SUMPRODUCT((A2:A200=1)*(B2:C200))/SUMPRODUCT((A2:A200=1)*2)
逻辑拆解
- 分子
SUMPRODUCT((A2:A200=1)*(B2:C200)):把所有周一对应的B、C列销售额全部累加,得到总销售额。 - 分母
SUMPRODUCT((A2:A200=1)*2):统计周一的总行数,再乘以2(因为每个周一对应B、C两列数据),得到参与计算的总数据个数。 - 总销售额除以总个数,就是所有周一(三月+四月)的销售额平均值。
方法3:加权平均法(分步清晰,易理解)
如果你希望逻辑更直白,可以分别计算两列的周一平均值,再做加权平均:
=(AVERAGEIF(A2:A200,1,B2:B200)*COUNTIF(A2:A200,1) + AVERAGEIF(A2:A200,1,C2:C200)*COUNTIF(A2:A200,1))/(COUNTIF(A2:A200,1)*2)
原理
用每列的周一平均值乘以该列周一的数据个数,相加得到总销售额,再除以两列的总数据个数,最终得到整体平均值。
内容的提问来源于stack exchange,提问作者J Q
相关产品推荐
相关产品推荐

