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

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

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