Перейти к содержимому

VBA Excel. Метод WorksheetFunction.SumIf

Суммирование числовых значений ячеек в диапазоне с учетом одного условия в коде VBA Excel. Метод WorksheetFunction.SumIf – синтаксис, параметры, примеры.

  1. Синтаксис метода WorksheetFunction.SumIf
  2. Примеры вычисления сумм с одним условием
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
Использование параметра «Диапазон_условия» в качестве параметра «Диапазон_суммирования». Значения ячеек указанного диапазона сравниваются с условием и они же суммируются при выполнении условия:

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:

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
Применение знаков подстановки в параметре «Условие»:

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 (суммирование с несколькими условиями).

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].