Excel 2010中计算最近90天指定列平均值的函数问题
嗨,我来帮你搞定这个问题!你用AVERAGEIFS时出错,大概率是犯了一个新手常踩的小坑——忘记用连接符把条件文本和日期计算结果拼起来了,另外咱们也得兼顾Excel 2010和Google Sheet的适配情况,下面一步步说:
问题解决步骤
1. Excel 2010 里的正确公式
你原来的公式逻辑没问题,但Excel没法直接识别">="today()-90这种写法,得用&把条件符号和函数结果连接成完整的判断条件。修正后的公式是:
=AVERAGEIFS(B:B, A:A, ">="&TODAY()-90, A:A, "<="&TODAY())
额外注意点:
- 先确认A列单元格是日期格式,如果是文本格式,日期判断会完全失效,可通过右键→设置单元格格式来调整。
- 如果B列的
VLOOKUP返回了#N/A这类错误值,会导致AVERAGEIFS出错,建议把B列的VLOOKUP改成:=IFERROR(VLOOKUP(你的原参数), 0),用0或者空值替代错误,避免影响平均值计算。 - 旧版Excel对整列引用(比如B:B)的支持不算太好,如果你数据量不大,可以把范围缩小成具体的单元格区间,比如
B1:B500,能提升计算效率。
2. Google Sheet 里的两种可选公式
Google Sheet的逻辑和Excel类似,但还有更灵活的写法:
方法一:修正后的AVERAGEIFS
=AVERAGEIFS(B:B, A:A, ">="&TODAY()-90, A:A, "<="&TODAY())
方法二:用FILTER更稳妥(自动排除错误值)
如果B列有VLOOKUP返回的错误值,用FILTER先筛选有效数据再计算平均值会更可靠:
=AVERAGE(FILTER(B:B, A:A >= TODAY()-90, A:A <= TODAY(), ISNUMBER(B:B)))
这个公式会先挑出符合日期范围且B列是有效数值的单元格,再计算平均值,完全不用怕错误值捣乱。
3. 最后再检查两个细节
- 确认A列的日期是不含周末的,但咱们的公式是按自然日的90天来筛选的,只要A列里在这个时间范围内的日期都会被纳入计算,这和你的需求匹配。
- 如果实际需要的是90个工作日(不是自然日),那得换成
WORKDAY函数调整日期条件,但看你的描述应该是自然日,所以不用改。
内容的提问来源于stack exchange,提问作者Y Feng
相关产品推荐
相关产品推荐

