移动平均值最后4个值中最低的3个

我修改了我在这里find的解决scheme在Excel中计算移动平均值 ,但是我正在努力进一步寻找最后4个值中最小(小)3的平均值。

我现在在那里的等式find了最后四个值(在我的情况下是高尔夫分数),并且可以通过除以4来创build一个平均值,但是我希望它取最后四个非最低值的平均值空白单元格(最后四位表示较大的列号)。

在这里输入图像说明

一个稍微简化的版本 – 试试这个数组公式。 一定要用Ctrl Shift 确认input

=SUM(SMALL(INDEX($F5:AH5,MATCH(TRUE,COLUMN($F5:AH5)=LARGE(NOT(ISBLANK($F5:AH5))*COLUMN($F5:AH5),4),0)):AH5,{1,2,3}))/3 

我用这个版本

=AVERAGE(SMALL(INDEX(F5:AH5,LARGE(IF(ISNUMBER(F5:AH5),COLUMN(F5:AH5)-COLUMN(F5)+1),4)):AH5,{1,2,3}))

CTRL + SHIFT + ENTER确认

INDEX函数查找包含最后4个值的范围,然后SMALL给出最小值3和AVERAGE

使用ISNUMBER而不是ISBLANK意味着如果非数字单元格是真空白,公式空白……或者甚至是文字,则该公式将起作用。

假设你在范围F4:AH4依次有整数1到n,如果你想用这些数字进行简化,也就是说这个版本不需要“数组入口”

=AVERAGE(SMALL(INDEX(F5:AH5,LARGE(INDEX(ISNUMBER(F5:AH5)*F$4:AH$4,0),4)):AH5,{1,2,3}))

如果有3个或更less的值,你会得到什么结果? 第一个版本将返回#NUM! 在这种情况下出现错误,第二个也会返回#NUM! 除非有三个值,在这种情况下,你得到所有3的平均值

这只适用于你想要n-1 n数字中最低的n-1

 =(sum(FourValuesRange) - max(FourValuesRange))/(count(FourValuesRange)-1) 

考虑下面的UDF

 Public Function MovAverage(rIn As Range) As Double Dim wf As WorksheetFunction, M As Long Dim zum As Double Dim it(1 To 4) Set wf = Application.WorksheetFunction N = rIn.Row M = rIn.Columns.Count + rIn.Column - 1 j = 1 zum = 0 For i = M To 1 Step -1 v = Cells(N, i).Value If v <> 0 And v <> "" Then it(j) = v zum = zum + v j = j + 1 If j = 5 Then GoTo NextPart End If Next i NextPart: MovAverage = (zum - wf.Max(it(1), it(2), it(3), it(4))) / 3 End Function 

在工作表单元格中

= MovAverage(F5:AH5)

将得到列FAH之间的第5行(不包括空白和零)中的最后四个值,并返回这些值中最小三个的平均值。

用公式做一个详细的答案,但是如果像你一样拿四个数之和,然后减去四个数的最大值,再把结果除以三得到平均数。

编辑下面的数组公式为我工作:( 控制 Shift键 Enterinput公式)

 =(SUM(($F5:AH5)*(COLUMN($F5:AH5)>LARGE((COLUMN($F5:AH5))*(NOT(ISBLANK($F5:AH5))),4+1)))-MAX(($F5:AH5)*(COLUMN($F5:AH5)>LARGE((COLUMN($F5:AH5))*(NOT(ISBLANK($F5:AH5))),4+1))))/3 

我认为这可以简化,但我没有解决