Vba: як написати функції sumif і sumifs
Щоб написати функції SUMIF і SUMIFS за допомогою VBA в Excel, можна використовувати такі методи:
Спосіб 1: функція SUMIF у VBA
SubSumif_Function ()
Range(" E2 ") = WorksheetFunction.Sumif(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
У цьому конкретному прикладі буде підсумовано значення в діапазоні B2:B12 лише тоді, коли відповідне значення в діапазоні A2:A12 дорівнює «Mavs» і призначить результат клітинці E2 .
Спосіб 2: функція SUMIFS у VBA
Sub Sumifs_Function()
Range(" E2 ") = WorksheetFunction.SumIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
У цьому конкретному прикладі буде підсумовано значення в діапазоні C2:C12, лише якщо значення в діапазоні A2:A12 дорівнює “Mavs” , а значення в діапазоні B2:B12 більше 20, а потім призначить результат клітинці E2 . .
У наведених нижче прикладах показано, як використовувати кожен із цих методів на практиці з таким набором даних у Excel, який містить інформацію про різних баскетболістів:
Приклад 1: функція SUMIF у VBA
Припустимо, ми хочемо обчислити суму значень у стовпці очок лише для гравців, які входять до команди Mavs.
Ми можемо створити такий макрос для виконання цієї функції SUMIF:
SubSumif_Function ()
Range(" E2 ") = WorksheetFunction.Sumif(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
Коли ми запускаємо цей макрос, ми отримуємо такий результат:
Зверніть увагу, що клітинка E2 містить значення 73 .
Це сума значень у стовпці очок для гравця команди Mavs.
Ми можемо перевірити, що це правильно, вручну обчисливши суму значень у стовпці очок для гравців команди Mavs:
Сума очок для гравців Mavs: 22 + 10 + 29 + 12 = 73 .
Приклад 2: функція SUMIFS у VBA
Припустимо, ми хочемо обчислити суму значень у стовпці передач лише для гравців, які відповідають наступним критеріям:
- Гравець є частиною команди Mavs.
- Гравець набрав більше 20 очок.
Ми можемо створити такий макрос для виконання цієї функції SUMIFS:
Sub Sumifs_Function()
Range(" E2 ") = WorksheetFunction.SumIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
Коли ми запускаємо цей макрос, ми отримуємо такий результат:
Зверніть увагу, що клітинка E2 містить значення 18 .
Це сума значень у колонці очок для гравців команди Mavs, які набрали більше 20 очок.
Примітка : у цьому прикладі ми створили функцію SUMIFS, використовуючи два діапазони критеріїв, але ви можете використовувати скільки завгодно діапазонів критеріїв у методі WorksheetFunction.SumIfs .
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання у VBA:
VBA: як написати функції COUNTIF і COUNTIFS
VBA: як написати функції AVERAGEIF і AVERAGEIFS