Как использовать сумму в excel через vba?
В Excel вы можете использовать VBA для вычисления суммы значений из диапазона ячеек или нескольких диапазонов. И в этом уроке мы собираемся изучить различные способы его использования.
Сумма в VBA с использованием WorksheetFunction
В VBA есть несколько функций , которые вы можете использовать, но специальной функции для этой цели не существует. Это не значит, что мы не можем подсчитать сумму. В VBA есть свойство WorksheetFunction , которое помогает вызывать функции в коде VBA.

Рассмотрим сумму значений в диапазоне A1:A10.
- Сначала введите свойство функции рабочего листа, затем выберите функцию СУММ из списка.
- Затем вы должны ввести начальную скобку, как при вводе функции в электронную таблицу.
- После этого нам нужно использовать объект диапазона для ссылки на диапазон, для которого мы хотим вычислить сумму.
- В конце введите закрывающую скобку и присвойте возвращаемое значение функции ячейке B1.
Range ("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))
Теперь, когда вы запускаете этот код, он вычисляет сумму значений, которые у вас есть в диапазоне A1:A10, и вводит значение в ячейку B1.

Сумма значений всего столбца или строки
В этом случае просто укажите строку или столбец вместо диапазона, который мы использовали в предыдущем примере.
' for the entire column A Range ("B1") = Application.WorksheetFunction.Sum( Range ("A:A")) ' for entire row 1 Range ("B1") = Application.WorksheetFunction.Sum( Range ("1:1"))
Используйте VBA для добавления значений выбора
Теперь предположим, что вы хотите суммировать значения только выбранных ячеек, поскольку вы можете использовать такой код.
Sub vba_sum_selection() Dim sRange As Range Dim iSum As Long On Error GoTo errorHandler Set sRange = Selection iSum = WorksheetFunction.Sum(Range(sRange.Address)) MsgBox iSum errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
В приведенном выше коде мы использовали выделение, затем указали его в переменной «sRange», затем использовали адрес этой переменной диапазона для получения суммы.
Сумма VBA всех ячеек выше
Следующий код извлекает все ячейки и значения суммы и вводит результат в выбранную ячейку.
Sub vba_auto_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection. End (xlUp). End (xlUp).Address iLast = Selection. End (xlUp).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Добавьте динамический диапазон с помощью VBA
Аналогичным образом вы можете использовать динамический диапазон при использовании VBA для добавления значений.
Sub vba_dynamic_range_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection.Offset(1, 1).Address iLast = Selection.Offset(5, 5).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Добавить динамический столбец или строку
Аналогично, если вы хотите использовать динамический столбец, вы можете использовать следующий код, который возьмет столбец активной ячейки и сложит все имеющиеся там значения.
Sub vba_dynamic_column() Dim iCol As Long On Error GoTo errorHandler iCol = ActiveCell.Column MsgBox WorksheetFunction.Sum(Columns(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
И за скандал.
Sub vba_dynamic_row() Dim iRow As Long On Error GoTo errorHandler iRow = ActiveCell.Row MsgBox WorksheetFunction.Sum(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Используйте СУММЕСЛИ с VBA
Как и в случае с суммой, вы можете использовать функцию СУММЕСЛИ для сложения значений с критериями, как в следующем примере.

Sub vba_sumif() Dim cRange As Range Dim sRange As Range Set cRange = Range ("A2:A13") Set sRange = Range ("B2:B13") Range ("C2") = _ WorksheetFunction.SumIf(cRange, "Product B", sRange) End Sub