我在excel表格中连续有12个不同的数字(在不同的行上重复几次),我想得到8个更大数字的平均数(不会使用4个数字)。我想使用一个数组,但是如何在这个数组中选择8个更大的数字?
我想在VBA中这样做。你有任何想法/方向如何进行,因为我不确定如何开始。
示例:12,3,5,6,8,11,9,7,5,8,10,1 (Results=8.875)
,如果我没有犯错!
感谢。
答案 0 :(得分:2)
我知道你要求VBA,但这是一个公式。如果这样做,您可以快速投入VBA(使用宏录制器来查看您是否不确定)。
如果在第1行,您可以使用:
=AVERAGE(LARGE(A1:L1,{1,2,3,4,5,6,7,8}))
您应该能够将A1:l1
更改为您的号码所在的范围,即
=AVERAGE(LARGE(A1:F2,{1,2,3,4,5,6,7,8}))
编辑:根据您的评论,也不需要VBA。只需使用条件突出显示。突出显示您的数字范围,然后转到条件突出显示 - >上/下规则 - >十大项目。然后只需将10
更改为8
,然后选择颜色/格式。然后申请!
(上面的每一行都被视为它自己的范围)。
Edt2:呸,我的图片有重复的数字,这就是前8条规则有时突出显示9个数字的原因。如果您要求我将尝试编辑和调整
答案 1 :(得分:2)
您可以使用简单的Excel函数来计算答案
=AVERAGE(LARGE(A1:L1, {1,2,3,4,5,6,7,8}))
在VBA中有点复杂,但这里有一个执行相同计算的函数(每个Mat的Mug显式输入):
Public Function AvgTop8(r As Range) As Double
Dim Sum As Double, j1 As Integer
For j1 = 1 To 12
If WorksheetFunction.Rank(r(1, j1), r) <= 8 Then
Sum = Sum + r(1, j1)
End If
Next j1
AvgTop8 = Sum / 8#
End Function
Excel RANK函数返回数字列表中数字的等级,最大等级为1,依此类推。因此,您可以搜索12个数字中的8个最大值,将它们相加并除以8。
答案 2 :(得分:-1)
你不需要VBA。您可以使用:
=AVERAGE(LARGE(A1:L1,{1;2;3;4;5;6;7;8}))