如何获得特定范围内x数据的平均值

时间:2018-09-29 19:04:32

标签: excel vba average

我正在对数据进行平均(VBA Excel),如下所示:

    If n < 8 Then
        Sheet2.Cells(i, 20).Value = "=SUM(E" & i & ":S" & i & ")/" & n
    Else
        Sheet2.Cells(i, 20).Value = "=AVERAGE(LARGE(E" & i & ":S" & i & ", {1,2,3,4,5,6,7,8}))"
    End If
    n = 0

此代码有效,因为我想要15个值中最好的8个值。 我的问题是如何对x值进行同样的操作(x将通过用户表单0<x<16引入)。 当然,根据x的不同,我可以使用带有15行的Select Case,但是在我看来,这不是一个很好的编码。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果AVERAGEIF可用:

Sheet2.Cells(i, 20).Value = "=AVERAGEIF(E" & i & ":S" & i & ","">=""&LARGE(E" & i & ":S" & i & "," & x & "))"

对于i = 2和x = 8,公式为:=AVERAGEIF(E2:S2,">="&LARGE(E2:S2,8))

如果不是:

Sheet2.Cells(i, 20).Value = "=SUMIF(E" & i & ":S" & i & ","">=""&LARGE(E" & i & ":S" & i & "," & x & "))/" & x

对于i = 2和x = 8,公式为:=SUMIF(E2:S2,">="&LARGE(E2:S2,8))/8