2014-10-20 23 views
1

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

这是我有:

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

enter image description here

+0

人解释为什么这个问题会得到一个downvote?为什么有人删除了他们的答案..?这不是第一次有人在我的一个问题上删除了他们的答案,他们是否也担心会陷入低调? – Adam12344 2014-10-21 01:01:57

回答

2

你可以这样做用数组公式(他们必须使用键输入按Ctrl ++输入)...

的基本步骤是:

  1. 找到该行(包括以上电流)是包含队名第三高的行号(或使用第1行,否则)
  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具有在B17的值,给我的行号,否则为1(我们的< 3 ...的情况下我们这次可以3,队名的第一行)
  • LARGE(...,3)会给我们第三高的这阵 - >有我们的队名
  • INDIRECT("B"&...&":"&CELL("address",C17))会使用给我们的范围内第三高的行号我们的第三个最高的行号当前行,列B和C
  • 然后我们做的完全一样,你在AVERAGEIF正在做,但使用这种INDIRECT范围和等价物列d和E

玩转同样的事情题!祝你好运。并记住使用Ctrl + Shift + 请输入进入!

编辑以上是给一个#NUM!错误的前两行 - 这是因为LARGE功能正试图获得第三位的2数组!还注意到在某些情况下列数字需要是绝对的(即$),以便复制到离线列。所以更新的公式:

{=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)))} 
  • 取代了3MIN(3,ROW()-2)使我们得到3如果有,但1或2,如果我们的前两个数据行的一个
+0

我认为这是一个很好的问题和一个天才的答案(我尝试过,但最终得到了很多帮手专栏),所以他们都加了标记 – 2014-10-21 11:43:27

+0

这很好,谢谢。我遇到的唯一问题是前2行产生数字错误。有想法该怎么解决这个吗? – Adam12344 2014-10-22 01:11:16

1

OK我过早地公布这并试图删除它时,我意识到这是行不通的。它现在应该工作....提供给你添加另一个条件,这是A列中的游戏日期。请记住,这是一个数组公式,所以点击ctrl + shift + enter。 A栏中的日期; B栏的团队; D列中的统计数据。此公式可以位于工作表中的永久位置,因此您可以输入团队名称(此处显示为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))