首页 文章

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

提问于
浏览
0

我修改了一个我在这里找到的解决方案Calculate Moving Average in Excel,但我正在努力更进一步,找到最后4个值中最低(SMALL)3的平均值 .

我在那里的等式现在找到最后四个值(在我的情况下是高尔夫分数)并且可以通过除以4来创建平均值,但我希望它能够取最后四个中的三个最低值的平均值空白单元格(最后四个表示较大的列号) .

enter image description here

5 回答

  • 4

    稍微简化的版本 - 试试这个数组公式 . 请务必使用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
    
  • 1

    我用过这个版本

    =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,如果您希望使用这些数字,则可以进一步简化,即此版本不需要"array entry"

    =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的平均值

  • 3

    仅当您需要 n-1 的最低 n 数时,此功能才有效

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

    考虑以下 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中的最后四个值(不包括空白和零),并返回这些值中最小三个的平均值 .

  • 1

    使用公式处理详细的答案,但如果你像你一样取四个总和,然后减去四个中的最大值,然后将结果除以3得到平均值 .

    EDIT 以下数组公式适合我:( 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
    

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

相关问题