所以我制作了一个平均/偏移公式,平均它看到的最后6个记录。例如,如果我使用单元格A1到J1,并且我在A1到H1中输入值,则它将从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
A B C D E F G H I J
row 1: 4 2 3 4 5 5 2
偏移公式的问题在于,如果在A1到J1之间存在黑色单元格,则计算错误,因为它认为最后一个数据处于中断位置(如果这是有意义的话)。我正在寻找一个替代公式,从所选数组中读取最右边的值(因为我将一直向右添加值)。
答案 0 :(得分:1)
要连续获取最后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)))
答案 1 :(得分:0)
这个小的 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
例如: