Vba: як написати функції averageif і averageifs


Щоб написати функції AVERAGEIF і AVERAGEIFS за допомогою VBA в Excel, можна використовувати такі методи:

Спосіб 1: функція AVERAGEIF у VBA

 Sub Averageif_Function()
    Range(" E2 ") = WorksheetFunction.AverageIf(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub

У цьому конкретному прикладі обчислюється середнє значення в діапазоні B2:B12 , де відповідне значення в діапазоні A2:A12 дорівнює “Mavs”, а потім призначається результат клітинці E2 .

Спосіб 2: функція AVERAGEIFS у VBA

 Sub Averageifs_Function()
    Range(" E2 ") = WorksheetFunction.AverageIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub

У цьому конкретному прикладі буде обчислено середнє значення в діапазоні C2:C12, де значення в діапазоні A2:A12 дорівнює “Mavs” , а значення в діапазоні B2:B12 більше за 20, а потім призначить результат клітинці E2 . .

У наведених нижче прикладах показано, як використовувати кожен із цих методів на практиці з таким набором даних у Excel, який містить інформацію про різних баскетболістів:

Приклад 1: функція AVERAGEIF у VBA

Припустимо, ми хочемо обчислити середнє значення в стовпці очок для гравців команди Mavs.

Ми можемо створити такий макрос для виконання цієї функції AVERAGEIF:

 Sub Averageif_Function()
    Range(" E2 ") = WorksheetFunction.AverageIf(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

Зверніть увагу, що клітинка E2 містить значення 18,25 .

Це говорить нам про те, що середнє значення в колонці очок для гравців команди Mavs становить 18,25.

Ми можемо переконатися, що це правильно, вручну обчисливши середнє значення очок гравця на Mavs:

Середні бали гравця Mavs: (22 + 10 + 29 + 12) / 4 = 18,25 .

Приклад 2: функція AVERAGEIFS у VBA

Припустімо, ми хочемо обчислити середнє значення в стовпці передач для гравців, які відповідають таким критеріям:

  • Гравець є частиною команди Mavs.
  • Гравець набрав більше 20 очок.

Ми можемо створити такий макрос для виконання цієї функції AVERAGEIFS:

 Sub Averageifs_Function()
    Range(" E2 ") = WorksheetFunction.AverageIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

Зверніть увагу, що клітинка E2 містить значення 9 .

Це говорить нам про те, що середня результативна передача серед гравців, які входять до команди Mavs і які набрали більше 20 очок, становить 9.

Примітка : у цьому прикладі ми створили функцію AVERAGEIFS, використовуючи два діапазони критеріїв, але ви можете використовувати скільки завгодно діапазонів критеріїв у методі WorksheetFunction.AverageIfs .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання у VBA:

VBA: як обчислити середнє значення діапазону
VBA: як написати функції SUMIF і SUMIFS
VBA: як написати функції COUNTIF і COUNTIFS

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *