在Excel中跟踪平均使用AverageIf

我正在尝试仅查找最后3个实例的平均值。 我正在使用AVERAGEIF语句,它将计算整个范围内的平均值,但是我只需要计算它find的最后3个实例(如果有less于3个实例,则计算得更less)。 我需要G和H的整个列来获得球队最近3场比赛的平均水平。

这是我的:

=AVERAGEIF(B3:C17,B17,D3:E17) 

在这里输入图像说明

您可以使用数组公式input公式(必须使用Ctrl + Shift + Enter键input )…

基本步骤是:

  1. find包含团队名称的第三个最高的行号(或者使用第一行)
  2. 使用AVERAGEIFINDIRECT范围,从B- that_row到C- current_row和D_ that_row到E- current_row

所以在F17单元格中,你会有公式

 {=AVERAGEIF(INDIRECT("B"&LARGE(IF(--($B$3:B17=B17)+($C$3:C17=B17),ROW($B$3:B17),1),3)&":"&CELL("address",C17)),B17,INDIRECT("D"&LARGE(IF(--($B$3:B17=B17)+($C$3:C17=B17),ROW($B$3:B17),1),3)&":"&CELL("address",E17)))} 

我们重复一些逻辑,因为我们有两个范围(标准范围和平均范围)。

  • IF(--($B$3:B17=B17)+($C$3:C17=B17),ROW($B$3:B17),1)表示如果列B或(使用+ )列C具有值(如果列B的IF(--($B$3:B17=B17)+($C$3:C17=B17),ROW($B$3:B17),1)在B17中,给我行号,否则1(我们<3的情况下,我们可以使这3,第一行的队名)
  • LARGE(...,3)会给我们这个数组的第三高 – >第三个最高的行号有我们的团队名称
  • INDIRECT("B"&...&":"&CELL("address",C17))将使用我们的第三个最高行号给出当前行的范围,B和C列
  • 那么我们就和你在AVERAGEIF中做的AVERAGEIF但是使用这个INDIRECT范围和D和E列的等价物

有趣的问题! 祝你好运。 并记住使用Ctrl + Shift + Enter进入它!

编辑上面是给#NUM! 前两行错误 – 这是因为LARGE函数试图获得2的数组中的第三大! 还注意到在某些情况下,列字母需要是绝对(即$ )复制到Away列。 所以更新的公式:

 {=AVERAGEIF(INDIRECT("B"&LARGE(IF(--($B$3:$B17=B17)+($C$3:$C17=B17),ROW($B$3:$B17),1),MIN(3,ROW()-2))&":"&CELL("address",$C17)),B17,INDIRECT("D"&LARGE(IF(--($B$3:$B17=B17)+($C$3:$C17=B17),ROW($B$3:$B17),1),MIN(3,ROW()-2))&":"&CELL("address",$E17)))} 
  • MIN(3,ROW()-2)代替MIN(3,ROW()-2)如果有的话,我们得到3,如果我们在前两个数据行之一,则得到1或2

好吧,我发现这个提前,并试图删除它,当我意识到这是行不通的。 它现在应该工作….提供给你添加另一个条件,这是A列中的游戏date。请记住,这是一个数组公式,所以点击Ctrl + Shift + Enter。 A栏中的date; B栏队; 统计在D列。这个公式可以驻留在工作表的永久位置,所以你可以input团队名称(在这里显示为F13)来获得三个最近的统计数据。

= AVERAGE(VLOOKUP(LARGE(IF(B3:B24 = F13,A3:A24),1),A3:D24,4),VLOOKUP(LARGE(IF(B3:B24 = F13,A3:A24),2), A3:D24,4),VLOOKUP(LARGE(IF(B3:B24 = F13,A3:A24),3),A3:D24,4))