我试图仅找到最后 3 个实例的平均值。我正在使用 AVERAGEIF 语句,它将计算整个范围的平均值,但我需要它只计算它找到的最后 3 个实例(如果可用的实例少于 3 个,则计算更少)。我需要 G 和 H 的整个列来获得球队最近 3 场比赛的平均值。
这就是我所拥有的:
=AVERAGEIF(B3:C17,B17,D3:E17)
最佳答案
您可以使用数组公式执行此操作(必须使用 Ctrl+Shift+Enter 键输入)...
基本步骤是:
INDIRECT
您的 AVERAGEIF
中的范围从 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 中的值为LARGE(...,3)
将给我们这个数组的第三高 --> 具有我们团队名称的第三高行号 INDIRECT("B"&...&":"&CELL("address",C17))
将使用我们第三高的行号为我们提供当前行 B 和 C 列的范围 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)))}
3
与 MIN(3,ROW()-2)
这样我们得到 3(如果有),但如果我们在前两个数据行之一中,则得到 1 或 2 关于vba - 在 Excel 中使用 AverageIf 的跟踪平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26458462/