【发布时间】:2014-04-10 06:59:48
【问题描述】:
我修改了在此处找到的解决方案 Calculate Moving Average in Excel,但我正在努力更进一步并找到最后 4 个值中最低 (SMALL) 3 个值的平均值。
我在其中的等式现在可以找到最后四个值(在我的例子中是高尔夫得分),并且可以通过除以 4 来创建平均值,但我希望它取三个最低值的平均值最后四个非空白单元格(最后四个表示较大的列号)。
【问题讨论】:
标签: excel excel-formula
我修改了在此处找到的解决方案 Calculate Moving Average in Excel,但我正在努力更进一步并找到最后 4 个值中最低 (SMALL) 3 个值的平均值。
我在其中的等式现在可以找到最后四个值(在我的例子中是高尔夫得分),并且可以通过除以 4 来创建平均值,但我希望它取三个最低值的平均值最后四个非空白单元格(最后四个表示较大的列号)。
【问题讨论】:
标签: excel excel-formula
我用过这个版本
=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 个或更少的值,你想要什么结果?第一个版本将返回 #NUM!在这种情况下出错,第二个也将返回 #NUM!除非恰好有 3 个值,在这种情况下,您会得到所有 3 个值的平均值
【讨论】:
稍微简化的版本 - 试试这个数组公式。请务必使用 CtrlShiftEnter 确认:
=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
【讨论】:
这仅适用于您想要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)
将获取列 F 和 AH 之间的第 5 行中的最后四个值(不包括空白和零),并返回这些值中最小的三个的平均值。
【讨论】:
使用公式得出详细的答案,但是如果你像你一样取四个的总和,然后减去四个的最大值,然后将该结果除以三得到平均值。
编辑 以下数组公式对我有用:(ControlShiftEnter 输入公式)
=(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
我认为可以简化,但我没有解决
【讨论】: