Excel VBA Макросы. Average

Автор Посетитель, 19 июня 2014, 14:41

Посетитель

Здравствуйте!
Есть такая задача: Мне нужно посчитать среднее по всему диапазону. Ячейки начала и конца диапазона являются аргументами пользовательской функции СРЕДНЕЕ
Я ввожу следующий код

Public Function СРЕДНЕЕ(f, g)
With Application.WorksheetFunction
СРЕДНЕЕ = .Average(f, g)
End With
End Function

Из приведенного файла "Пример1" f - это ячейка А1, а g - ячейка А9

Моя функция СРЕДНЕЕ работает как среднее между первым и последним элементом, а не среднее всего диапазона...
А если я в строчке СРЕДНЕЕ между аргументами пишу двоеточие, вылезает ошибка "Expected list separator or )"

Вопрос, как при помощи макроса посчитать среднее по всему диапазону?

Администратор

Вариант 1

Передача в функцию "Average" VBA-массива:

Public Function СРЕДНЕЕ(f As Excel.Range)
    With Application.WorksheetFunction
        СРЕДНЕЕ = .Average(f.Value)
    End With
End Function


Вариант 2

Передача в функцию "Average" диапазона ячеек:

Public Function СРЕДНЕЕ(f As Excel.Range)
    With Application.WorksheetFunction
        СРЕДНЕЕ = .Average(f)
    End With
End Function