Как получить среднее значение х данных в определенном диапазоне - PullRequest
0 голосов
/ 29 сентября 2018

Я делаю среднее значение данных (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

Этот код работает, потому что я хочу 8 лучших значений из 15 значений.Мой вопрос заключается в том, как сделать то же самое со значениями x (x будет введен через пользовательскую форму, 0<x<16).Конечно, я мог бы использовать Select Case с 15 строками в зависимости от x, но это не кажется мне хорошим кодированием.

Есть идеи?

1 Ответ

0 голосов
/ 29 сентября 2018

Если доступно 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

...