我刚开始在这里提问,所以我希望我能回答正确。我正在帮助我父亲制作电子表格,但我在弄清楚如何计算一个公式时遇到了问题。不知道是否可以用公式来完成或者是否必须用宏来完成。
这是包含多场比赛的计分表。每场比赛都有一个总得分,得分旁边的单元格是 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 个参数返回一个由 0
和 1
组成的数组,用于仅选择感兴趣的第一个数组的元素。
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/