¿cómo usar sum en excel a través de vba?

En Excel, puede utilizar VBA para calcular la suma de valores de un rango de celdas o de varios rangos. Y, en este tutorial, aprenderemos las diferentes formas en que podemos usarlo.

Suma en VBA usando WorksheetFunction

En VBA, hay varias funciones que puede utilizar, pero no existe una función específica para este propósito. Esto no significa que no podamos hacer una suma. En VBA, existe una propiedad llamada WorksheetFunction que puede ayudarle a llamar funciones en código VBA.

suma-en-vba-usando-hoja de cálculo

Considere la suma de los valores en el rango A1:A10.

  1. Primero ingrese la propiedad de la función de la hoja de trabajo, luego seleccione la función SUMA de la lista.
    enter-worksheet-function
  2. A continuación, debe ingresar un paréntesis inicial como lo hace cuando ingresa una función en la hoja de cálculo.
    starting-parenthesis
  3. Después de eso, necesitamos usar el objeto de rango para referirnos al rango para el cual queremos calcular la suma.
    use-the-range-object
  4. Al final, escriba un paréntesis de cierre y asigne el valor de retorno de la función a la celda B1.
    closing-parenthesis
 Range ("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))

Ahora cuando ejecutas este código calcula la suma de los valores que tienes en el rango A1:A10 e ingresa el valor en la celda B1.

ejecuta el código para calcular

Suma de valores de una columna o fila completa

En este caso, simplemente especifique una fila o columna en lugar del rango que usamos en el ejemplo anterior.

 ' 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"))

Utilice VBA para agregar valores de selección

Ahora suponga que desea sumar el valor de las celdas seleccionadas solo porque puede usar un código como este.

 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

En el código anterior, usamos la selección, luego la especificamos en la variable «sRange», luego usamos la dirección de esta variable de rango para obtener la suma.

Suma VBA de todas las celdas anteriores

El siguiente código extrae todas las celdas y suma los valores e ingresa el resultado en la celda seleccionada.

 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

Agregue rango dinámico usando VBA

Y de manera similar, puede usar el rango dinámico mientras usa VBA para agregar valores.

 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

Agregar una columna o fila dinámica

De manera similar, si deseas utilizar una columna dinámica, puedes usar el siguiente código que tomará la columna de la celda activa y sumará todos los valores que tienes allí.

 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

Y por una fila.

 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

Utilice SUMAR.SI con VBA

Al igual que la suma, puedes usar la función SUMAR.SI para sumar valores con criterios como en el siguiente ejemplo.

sumif-con-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

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *