平均在行内input的最后6条logging

所以我做了一个平均/偏移公式,它平均最后看到的6条logging。 例如,如果我正在处理单元格A1到J1,并且在A1到H1中input值,则会将C1到H1的值平均。 如果我在I1中添加一个值,它将平均D1到I1。 看下面的公式:

AVERAGE(OFFSET(A1,0,COUNT(A1:J1)-6,1,6)) AVERAGE(OFFSET(first cell, COUNT(entire range)-N,0,N,1)) 

这是一个例子:平均值应该是3.5

  ABCDEFGHIJ row 1: 4 2 3 4 5 5 2 

偏移公式的问题是,如果A1到J1之间存在黑色单元格,则会错误计算,因为它认为最后一个数据是在中断处(如果有意义的话)。 我正在寻找一个替代公式,从所选数组的最右边的值读取(因为我会一直向右边添加值)。

要获取连续的最后6个值,排除所有空白:

 =AVERAGE(INDEX(135:135,AGGREGATE(14,6,COLUMN(H135:AA135)/(H135:AA135<>""),6)):INDEX(135:135,AGGREGATE(14,6,COLUMN(H135:AA135)/(H135:AA135<>""),1))) 

这个小UDF()应该适用于任何行或列:

 Option Base 1 Public Function SuperAverage(rng As Range, N As Long) As Double Dim RngCnt As Long, i As Long, Zum As Double, j As Long Dim ary() As Double ReDim ary(1) j = 1 RngCnt = rng.Count For i = RngCnt To 1 Step -1 If rng(i).Value <> "" Then ary(j) = rng(i).Value If j = N Then Exit For ReDim Preserve ary(j + 1) j = j + 1 End If Next i SuperAverage = Application.WorksheetFunction.Average(ary) End Function 

例如:

在这里输入图像说明

第一个参数是范围,第二个参数是项目数量。