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