gpt4 book ai didi

vba - 在 Excel 中使用 AverageIf 的跟踪平均值

转载 作者:行者123 更新时间:2023-12-04 22:04:40 25 4
gpt4 key购买 nike

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

这就是我所拥有的:

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

enter image description here

最佳答案

您可以使用数组公式执行此操作(必须使用 Ctrl+Shift+Enter 键输入)...

基本步骤是:

  • 查找包含团队名称的第三高行号的行(包括当前行及以上)(否则使用第 1 行)
  • 使用 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)))}
  • 替换了 3MIN(3,ROW()-2)这样我们得到 3(如果有),但如果我们在前两个数据行之一中,则得到 1 或 2
  • 关于vba - 在 Excel 中使用 AverageIf 的跟踪平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26458462/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com