Vba: как писать функции суммесли и суммесли
Вы можете использовать следующие методы для написания функций СУММЕСЛИ и СУММЕСЛИ с использованием VBA в Excel:
Способ 1: функция СУММЕСЛИ в 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: функция СУММЕСЛИ в VBA
Допустим, мы хотим посчитать сумму значений в столбце очков только для игроков, состоящих в команде «Мавс».
Мы можем создать следующий макрос для выполнения этой функции СУММЕСЛИ:
SubSumif_Function ()
Range(" E2 ") = WorksheetFunction.Sumif(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что ячейка E2 содержит значение 73 .
Это представляет собой сумму значений в столбце очков для игрока команды Mavs.
В правильности этого мы можем убедиться, посчитав вручную сумму значений в столбце очков для игроков команды «Мавс»:
Сумма очков игроков «Мавс»: 22+10+29+12= 73 .
Пример 2: функция СУММИФС в VBA
Допустим, мы хотим посчитать сумму значений в столбце передач только для игроков, соответствующих следующим критериям:
- Игрок выступает за команду Мавс.
- Игрок набрал более 20 очков.
Мы можем создать следующий макрос для выполнения этой функции SUMIFS:
Sub Sumifs_Function()
Range(" E2 ") = WorksheetFunction.SumIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что ячейка E2 содержит значение 18 .
Это сумма значений в столбце очков для игроков команды Мавс, набравших более 20 очков.
Примечание . В этом примере мы создали функцию СУММИФС, используя два диапазона критериев, но вы можете использовать столько диапазонов критериев, сколько захотите, в методе WorksheetFunction.SumIfs .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как писать функции COUNTIF и COUNTIFS
VBA: как написать функции СРЗНАЧЕСЛИ и СРЗНАЧЕСЛИФС