求助:Excel多条件平均值计算(Averageifs公式结果异常)
解决Excel中多条件平均值计算(G列为C/P且H列>0)
先把你的示例数据整理成更清晰的表格,方便核对结果:
| Column G | Column H |
|---|---|
| C | $153.00 |
| L | $(25.00) |
| P | $(10.00) |
| S | $15.00 |
| C | $20.00 |
| L | $100.00 |
| P | $(50.00) |
| S | $(150.00) |
| C | $(50.00) |
| P | $(52.00) |
| L | $75.00 |
| S | $(75.00) |
| C | $50.00 |
| P | $75.00 |
| L | $150.00 |
| S | $(10.00) |
先说说你之前尝试的公式为啥不对:
- 第一个
AVERAGE(AVERAGEIFS(...)):用{"C","P"}作为条件时,AVERAGEIFS会分别算出C和P各自符合H>0的平均值,然后AVERAGE再把这两个平均值求平均——这不是所有符合条件单元格的整体平均值,逻辑错了。 - 第二个
AVERAGEIFS(...):普通输入公式只会返回第一个条件(C)的结果,就算按数组键,返回的也是两个单独的平均值,不是整体的。 - 第三个
AVERAGE(IF(ISNUMBER(MATCH(...)))):MATCH的第三个参数写错了(应该是0做精确匹配),而且没加H>0的判断,自然得不到正确结果。
下面给你几个靠谱的解法,适配不同Excel版本:
1. 兼容所有Excel版本:SUMPRODUCT组合法
这个公式不管是旧版还是新版Excel都能用,逻辑清晰:
=SUMPRODUCT(($G$29:$G$1000={"C","P"})*($H$29:$H$1000>0)*$H$29:$H$1000)/SUMPRODUCT(($G$29:$G$1000={"C","P"})*($H$29:$H$1000>0))
原理:
- 分子:先判断G列是否为C/P、H列是否>0,两个条件都满足时返回1,再乘以对应的H值,最后把所有符合条件的H值求和。
- 分母:统计同时满足两个条件的单元格数量。
- 总和除以数量,就是我们要的平均值。
2. 数组公式法(旧版Excel需按Ctrl+Shift+Enter)
如果习惯用数组逻辑,可以用这个公式:
=AVERAGE(IF(($G$29:$G$1000="C")+($G$29:$G$1000="P"),IF($H$29:$H$1000>0,$H$29:$H$1000)))
注意:
- 旧版Excel输入完公式后,要按Ctrl+Shift+Enter触发数组计算(新版Excel直接回车就行)。
- 这里用
+表示逻辑“或”,先筛选出G列为C或P的行,再嵌套IF筛选出H>0的数值,最后求平均。
3. 新版Excel专属:FILTER+AVERAGE(最简洁)
如果你用的是Excel 365或2021版本,直接用FILTER函数筛选符合条件的数据,再求平均,直观又好写:
=AVERAGE(FILTER($H$29:$H$1000,($G$29:$G$1000={"C","P"})*($H$29:$H$1000>0)))
原理:FILTER直接把满足「G是C/P且H>0」的H列数据筛选出来,AVERAGE直接计算这些数据的平均值,一步到位。
最后验证下结果:你的示例里符合条件的H值是153、20、50、75,总和298,平均值74.5,用上面任意一个公式都能得到这个正确结果。
内容的提问来源于stack exchange,提问作者Scint
相关产品推荐
相关产品推荐

