vba - 另一个公式中使用的单元格旁边的单元格的平均值

标签 vba excel excel-formula

我刚开始在这里提问,所以我希望我能回答正确。我正在帮助我父亲制作电子表格,但我在弄清楚如何计算一个公式时遇到了问题。不知道是否可以用公式来完成或者是否必须用宏来完成。

这是包含多场比赛的计分表。每场比赛都有一个总得分,得分旁边的单元格是 X 计数(靶心数量)。在同一行(K 列)中,我计算前 6 名总分并求平均值:

=AVERAGE(LARGE((N15,Q15,T15,W15,Z15,AC15,AF15,AI15,AL15,AO15,AR15,AU15,AX15,BA15,BD15,BG15,BJ15),{1,2,3,4,5,6}))

现在我需要取上面公式中使用的总分旁边的 X 计数的平均值,并将解决方案放入 L 列中。

例如,如果该行中用于 AVG 得分的单元格为:

N15,Q15,T15,W15,Z15,AC15

那么需要用于 X 计数 AVG 的单元格为:

O15,R15,U15,X15,AA15,AD15

该结果将被放入L15

请帮忙。如果需要任何说明,请告诉我。

屏幕截图:

最佳答案

请尝试以下公式:

=SUMPRODUCT(O15:BM15,
--(MOD(COLUMN(N15:BL15)-COLUMN($N15),3)=0),
--(N15:BL15+O15:BM15/10^3+COLUMN(N15:BL15)/10^6>=
   LARGE(N15:BL15+O15:BM15/10^3+COLUMN(N15:BL15)/10^6,6))
   )/6

它是如何工作的?

SUMPRODUCT 有 3 个参数 - 第一个是要求和的数组,接下来的 2 个参数返回一个由 01 组成的数组,用于仅选择感兴趣的第一个数组的元素。

  • MOD(COLUMN(N15:BL15)-COLUMN($N15),3)=0)

包含此部分是为了避免列出每个单元格。如果分数在输入范围的每第三列中,我们可以计算相对于第一列的列号,函数 MOD(column,3) 返回:{1,0,0,1,0,0.. .}。因此,只有输入数组的每第三列才会包含在 sum 中。

  • (N15:BL15+O15:BM15/10^3+COLUMN(N15:BL15)/10^6>= 大(N15:BL15+O15:BM15/10^3+COLUMN(N15:BL15)/10^6,6)

这部分是决定最终总和中应该包括哪6个分数。最棘手的部分是决定如何处理关系。我的方法是采取:

  • 如果两个分数相同,则取靶心数量较多的那个
  • 如果仍然平局,则从第一列中取出

这意味着我们计算的不是 N15 值:

N15+O15/10^3+COLUMN(N15)/10^6

根据您的示例数据,其计算结果为:566.017014。前三位小数是靶心数,接下来的 3 位是列数。

您可以使用相同的公式通过更改第一个参数来计算前 6 个分数的平均值:

=SUMPRODUCT(N15:BL15,
--(MOD(COLUMN(N15:BL15)-COLUMN($N15),3)=0),
--(N15:BL15+O15:BM15/10^3+COLUMN(N15:BL15)/10^6>=
   LARGE(N15:BL15+O15:BM15/10^3+COLUMN(N15:BL15)/10^6,6))
   )/6

关于vba - 另一个公式中使用的单元格旁边的单元格的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29865152/

相关文章:

vba - 在VBA中的子例程中捕获编译错误

python - Pandas /Excel : Any way to encode the ALT-ENTER/CHAR(10) line break into data when calling DataFrame. to_excel()?

string - 日期范围内的天数

excel - 使用VBA取消对单元格的保护

vba - 将 Excel 工作簿保存在新创建的同名文件夹中

vba - 根据 VBA 中的日期值识别日期

vba - 打开/关闭标志以更改名称

excel - 在excel中每十行生成两个假 bool 值

Excel从非堆叠单元格创建数组

vba - 检查单元格是否为空 Excel VBA