Метод WorksheetFunction.SumIf — аналог функции СУММЕСЛИ в VBA Excel — суммирование числовых значений в заданном диапазоне с учетом одного условия (критерия).
Синтаксис метода WorksheetFunction.SumIf
WorksheetFunction.SumIf (Диапазон_условия, Условие, Диапазон_суммирования)
- Диапазон_условия – обязательный параметр, представляющий из себя часть обрабатываемой таблицы, в ячейках которого ищется совпадение с условием (критерием) суммирования.
- Условие – обязательный параметр, определяющий условие (критерий) суммирования.
- Диапазон_суммирования – необязательный* параметр, представляющий из себя часть таблицы, в ячейках которого, соответствующих условию (критерию), суммируются значения.
* Если «Диапазон_суммирования» не указан, его роль выполняет «Диапазон_условия». Другими словами, если условие проверяется в тех же ячейках, значения которых суммируются при выполнении условия, то параметр «Диапазон_суммирования» можно не указывать.
В параметре «Условие» метода WorksheetFunction.SumIf можно использовать знаки подстановки:
- вопросительный знак (?) – заменяет один любой символ;
- звездочка (*) – заменяет любую последовательность символов (в том числе ни одного символа);
- тильда (~) – ставится перед вопросительным знаком или звездочкой, чтобы они обозначали сами себя.
Примеры вычисления сумм с одним условием
Таблица, которая использовалась для реализации всех примеров в коде VBA Excel:
Склад | Товар | Кол-во | Цена | Сумма |
---|---|---|---|---|
№1 | Апельсины | 10 | 65,00 | 650,00 |
№1 | Бананы | 20 | 55,00 | 1100,00 |
№1 | Лимоны | 20 | 110,00 | 2200,00 |
№1 | Мандарины | 30 | 70,00 | 2100,00 |
№1 | Яблоки | 25 | 50,00 | 1250,00 |
№2 | Апельсины | 15 | 65,00 | 975,00 |
№2 | Бананы | 40 | 55,00 | 2200,00 |
№2 | Лимоны | 15 | 110,00 | 1650,00 |
№2 | Мандарины | 5 | 70,00 | 350,00 |
№2 | Яблоки | 10 | 50,00 | 500,00 |
Если хотите повторить примеры, скопируйте эту таблицу и вставьте на рабочий лист Excel в ячейку A1. Таблица займет диапазон A1:E11.
Пример 1
Использование параметра «Диапазон_условия» в качестве параметра «Диапазон_суммирования». Значения ячеек указанного диапазона сравниваются с условием и они же суммируются при выполнении условия:
1 2 3 4 5 |
Sub Primer1() Dim a As Double a = WorksheetFunction.SumIf(Range("E2:E11"), ">2000") MsgBox a End Sub |
В этом примере складываются все значения в диапазоне E2:E11, которые превышают 2000. Обратите внимание, что условие заключено в прямые кавычки.
Другие варианты использования параметра «Условие»: «<1000», «<>2200», «=2200».
Пример 2
Определяем общую сумму товаров на складе №2:
1 2 3 4 5 6 |
Sub Primer2() Dim a As Double a = WorksheetFunction.SumIf(Range("A2:A11"), _ "№2", Range("E2:E11")) MsgBox a End Sub |
Совпадение с условием ищется в диапазоне A2:A11. Значения ячеек диапазона E2:E11 суммируются в тех строках, где выполняется условие.
Пример 3
Применение знаков подстановки в параметре «Условие»:
1 2 3 4 5 6 7 8 9 |
Sub Primer3() Dim a As Double a = WorksheetFunction.SumIf(Range("B2:B11"), _ "*ины", Range("E2:E11")) MsgBox a a = WorksheetFunction.SumIf(Range("B2:B11"), _ "??????ины", Range("E2:E11")) MsgBox a End Sub |
В этом примере мы двумя способами определяем общую сумму апельсинов и мандаринов на обоих складах. В первом случае используем звездочку (*), которая заменяет любую последовательность символов. Во втором случае используем знак вопроса (?), который обозначает один любой символ.
Смотрите также статьи о методах WorksheetFunction.Sum (суммирование без условия) и WorksheetFunction.SumIfs (суммирование с несколькими условиями).