Как использовать сумму в excel через vba?

В Excel вы можете использовать VBA для вычисления суммы значений из диапазона ячеек или нескольких диапазонов. И в этом уроке мы собираемся изучить различные способы его использования.

Сумма в VBA с использованием WorksheetFunction

В VBA есть несколько функций , которые вы можете использовать, но специальной функции для этой цели не существует. Это не значит, что мы не можем подсчитать сумму. В VBA есть свойство WorksheetFunction , которое помогает вызывать функции в коде VBA.

сумма в таблице с использованием VBA

Рассмотрим сумму значений в диапазоне A1:A10.

  1. Сначала введите свойство функции рабочего листа, затем выберите функцию СУММ из списка.
    enter-worksheet-function
  2. Затем вы должны ввести начальную скобку, как при вводе функции в электронную таблицу.
    starting-parenthesis
  3. После этого нам нужно использовать объект диапазона для ссылки на диапазон, для которого мы хотим вычислить сумму.
    use-the-range-object
  4. В конце введите закрывающую скобку и присвойте возвращаемое значение функции ячейке B1.
    closing-parenthesis
 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

Как и в случае с суммой, вы можете использовать функцию СУММЕСЛИ для сложения значений с критериями, как в следующем примере.

суммиф-с-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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *