如何用AVERAGEIF函数按年份计算表格中pH值的平均值?
按年份计算pH平均值的解决方案
原公式错误分析
你的公式失败原因有两个:
- 范围/平均值区域选错:你用了
Table1[[#Headers],[Date]]和Table1[[#Headers],[pH (total scale)]],这仅指向表头单元格,而非整个数据列。应该使用Table1[Date](整个日期数据列)和Table1[pH (total scale)](整个pH数据列)。 - 条件设置错误:日期列的单元格是完整日期(如
2011/3/15),直接写2011无法匹配到任何单元格,必须先提取日期中的年份再进行判断。
可行解决方案
方案1:添加辅助列(最简单直观,适配所有Excel版本)
- 在表格新增一列,命名为
Year,输入公式=YEAR([@Date]),按回车后Excel会自动填充整列,提取每个日期对应的年份。 - 然后使用
AVERAGEIF计算对应年份的平均值,例如计算2011年的pH平均值:
把公式中的=AVERAGEIF(Table1[Year], 2011, Table1[pH (total scale)])2011替换为其他年份(如2012、2013)即可快速得到对应结果。
方案2:用SUMPRODUCT直接计算(无需辅助列)
如果不想添加辅助列,可以用SUMPRODUCT一次性完成年份筛选和平均值计算,公式如下(以2011年为例):
=SUMPRODUCT(--(YEAR(Table1[Date])=2011), Table1[pH (total scale)])/SUMPRODUCT(--(YEAR(Table1[Date])=2011))
- 原理:第一个
SUMPRODUCT计算所有2011年的pH值总和,第二个统计2011年的有效数据行数,两者相除得到平均值。
方案3:用AVERAGEIFS(Excel 2010及以上版本)
通过日期范围锁定年份,公式如下:
=AVERAGEIFS(Table1[pH (total scale)], Table1[Date], ">="&DATE(2011,1,1), Table1[Date], "<="&DATE(2011,12,31))
- 原理:用
DATE(2011,1,1)和DATE(2011,12,31)定义2011年的日期范围,AVERAGEIFS自动筛选该范围内的pH值并计算平均值。
方案4:一次性生成所有年份的平均值(Excel 365/2021动态数组)
如果使用支持动态数组的Excel版本,可一次性算出2011-2020年所有年份的平均值,无需逐个修改公式:
=LET( years, FILTER(UNIQUE(YEAR(Table1[Date])), (UNIQUE(YEAR(Table1[Date]))>=2011)*(UNIQUE(YEAR(Table1[Date]))<=2020)), averages, MAP(years, LAMBDA(y, AVERAGEIFS(Table1[pH (total scale)], Table1[Date], ">="&DATE(y,1,1), Table1[Date], "<="&DATE(y,12,31)))), HSTACK(years, averages) )
- 执行后会自动生成两列数据:左边是年份,右边是对应年份的pH平均值。
内容的提问来源于stack exchange,提问作者Kitt Kroeger
相关产品推荐
相关产品推荐

