Из этого туториала Вы узнаете, как использовать функцию Excel Sum в VBA.
Функция суммы - одна из наиболее широко используемых функций Excel и, вероятно, первая, которую пользователи Excel научились использовать. VBA фактически не имеет эквивалента - пользователь должен использовать встроенную функцию Excel в VBA, используя Рабочий лист объект.
Итоговый рабочий лист
Объект WorksheetFunction можно использовать для вызова большинства функций Excel, доступных в диалоговом окне «Вставить функцию» в Excel. Функция СУММ - одна из них.
123 | Sub TestFunctionДиапазон ("D33") = Application.WorksheetFunction.Sum ("D1: D32")Конец подписки |
В функции СУММ может быть до 30 аргументов. Каждый из аргументов также может относиться к диапазону ячеек.
В этом примере ниже добавляются ячейки с D1 по D9.
123 | Sub TestSum ()Диапазон ("D10") = Application.WorksheetFunction.SUM ("D1: D9")Конец подписки |
В приведенном ниже примере добавляется диапазон в столбце D и диапазон в столбце F. Если вы не введете объект Application, он будет принят.
123 | Sub TestSum ()Диапазон ("D25") = WorksheetFunction.SUM (Диапазон ("D1: D24"), Диапазон ("F1: F24"))Конец подписки |
Обратите внимание, что для одного диапазона ячеек вам не нужно указывать слово «Диапазон» в формуле перед ячейками, это предполагается кодом. Однако, если вы используете несколько аргументов, вам нужно это сделать.
Присвоение результата суммы переменной
Возможно, вы захотите использовать результат своей формулы в другом месте кода, а не записывать его непосредственно обратно в Excel Range. В этом случае вы можете присвоить результат переменной, которая будет использоваться позже в вашем коде.
1234567 | Sub AssignSumVariable ()Тусклый результат как двойной'Назначьте переменнуюрезультат = WorksheetFunction.SUM (Диапазон ("G2: G7"), Диапазон ("H2: H7"))'Показать результатMsgBox «Всего диапазонов» & результатКонец подписки |
Суммировать объект диапазона
Вы можете назначить группу ячеек объекту Range, а затем использовать этот объект Range с Рабочий лист объект.
123456789 | Sub TestSumRange ()Dim rng As Range'назначить диапазон ячеекУстановить rng = Range ("D2: E10")'используйте диапазон в формулеДиапазон ("E11") = WorksheetFunction.SUM (rng)'отпустить объект диапазонаУстановить rng = ничегоКонец подписки |
Суммировать несколько объектов диапазона
Точно так же вы можете суммировать несколько объектов диапазона.
123456789101112 | Sub TestSumMultipleRanges ()Dim rngA As ДиапазонDim rngB as Range'назначить диапазон ячеекУстановите rngA = Range ("D2: D10")Установите rngB = Range ("E2: E10")'используйте диапазон в формулеДиапазон ("E11") = WorksheetFunction.SUM (rngA, rngB)'отпустить объект диапазонаУстановите rngA = NothingУстановить rngB = НичегоКонец подписки |
Суммировать весь столбец или строку
Вы также можете использовать функцию Sum, чтобы сложить весь столбец или всю строку
Эта процедура ниже суммирует все числовые ячейки в столбце D.
123 | Sub TestSum ()Диапазон ("F1") = WorksheetFunction.SUM (Диапазон ("D: D")Конец подписки |
В то время как эта процедура ниже суммирует все числовые ячейки в строке 9.
123 | Sub TestSum ()Диапазон ("F2") = WorksheetFunction.SUM (Диапазон ("9: 9")Конец подписки |
Суммировать массив
Вы также можете использовать WorksheetFunction.Sum для суммирования значений в массиве.
123456789101112 | Sub TestArray ()Dim intA (от 1 до 5) как целое числоDim SumArray как целое число'заполнить массивintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'сложите массив и покажите результатMsgBox WorksheetFunction.SUM (intA)Конец подписки |
Использование функции SumIf
Еще одна функция рабочего листа, которую можно использовать, - это функция СУММЕСЛИ.
123 | Sub TestSumIf ()Диапазон ("D11") = WorksheetFunction.SUMIF (Диапазон ("C2: C10"), 150, Диапазон ("D2: D10"))Конец подписки |
Приведенная выше процедура суммирует только ячейки в диапазоне (D2: D10), если соответствующая ячейка в столбце C = 150.
Формула суммы
Когда вы используете Рабочий лист Функция. СУММ чтобы добавить сумму к диапазону на листе, возвращается статическая сумма, а не гибкая формула. Это означает, что при изменении ваших цифр в Excel значение, возвращаемое Рабочий лист не изменится.
В приведенном выше примере процедура TestSum суммировала диапазон (D2: D10), и результат был помещен в D11. Как вы можете видеть в строке формул, это число, а не формула.
Если любое из значений изменится в диапазоне (D2: D10), результат в D11 будет НЕТ изменение.
Вместо использования Рабочий лист Функция. СУММ, вы можете использовать VBA для применения функции суммы к ячейке с помощью Формула или Формула R1C1 методы.
Формула Метод
Метод формулы позволяет указать конкретный диапазон ячеек, например: D2: D10, как показано ниже.
123 | Sub TestSumFormulaДиапазон ("D11"). Формула = "= СУММ (D2: D10)"Конец подписки |
Метод FormulaR1C1
Метод FromulaR1C1 более гибкий, поскольку он не ограничивает вас заданным диапазоном ячеек. Пример ниже даст нам тот же ответ, что и приведенный выше.
123 | Sub TestSumFormula ()Диапазон ("D11"). FormulaR1C1 = "= СУММ (R [-9] C: R [-1] C)"Конец подписки |
Однако, чтобы сделать формулу более гибкой, мы могли бы изменить код, чтобы он выглядел так:
123 | Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= СУММ (R [-9] C: R [-1] C)"Конец подписки |
Где бы вы ни находились на своем листе, формула складывает 8 ячеек прямо над ней и помещает ответ в вашу ActiveCell. На диапазон внутри функции SUM следует ссылаться с использованием синтаксиса Row (R) и Column (C).
Оба эти метода позволяют использовать динамические формулы Excel в VBA.
Теперь вместо значения в D11 будет формула.