首页 > 解决方案 > 如何获取特定范围内x数据的平均值

问题描述

我正在做如下平均数据(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)。当然,我可以使用 15 行的 Select Case,具体取决于 x,但在我看来这不是一个好的编码。

有任何想法吗?

标签: excelvbaaverage

解决方案


如果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


推荐阅读