Función de suma de VBA (rangos, columnas y más)

Este tutorial le mostrará cómo usar la función de suma de Excel en VBA

La función de suma es una de las funciones de Excel más utilizadas y probablemente la primera que los usuarios de Excel aprenden a utilizar. VBA en realidad no tiene un equivalente: un usuario tiene que usar la función incorporada de Excel en VBA usando el WorkSheetFunction objeto.

Función de hoja de cálculo de suma

El objeto WorksheetFunction se puede utilizar para llamar a la mayoría de las funciones de Excel que están disponibles en el cuadro de diálogo Insertar función en Excel. La función SUM es una de ellas.

123 Función de subpruebaRango ("D33") = Application.WorksheetFunction.Sum ("D1: D32")End Sub

Puede tener hasta 30 argumentos en la función SUMA. Cada uno de los argumentos también puede hacer referencia a un rango de celdas.

Este ejemplo a continuación sumará las celdas D1 a D9

123 Suma de prueba secundaria ()Rango ("D10") = Application.WorksheetFunction.SUM ("D1: D9")End Sub

El siguiente ejemplo agregará un rango en la columna D y un rango en la columna F. Si no escribe el objeto Aplicación, se asumirá.

123 Suma de prueba secundaria ()Rango ("D25") = WorksheetFunction.SUM (Rango ("D1: D24"), Rango ("F1: F24"))End Sub

Tenga en cuenta que para un solo rango de celdas, no tiene que especificar la palabra "Rango" en la fórmula delante de las celdas, el código lo asume. Sin embargo, si utiliza varios argumentos, debe hacerlo.

Asignar un resultado de suma a una variable

Es posible que desee utilizar el resultado de su fórmula en otro lugar del código en lugar de escribirlo directamente en un rango de Excel. Si este es el caso, puede asignar el resultado a una variable para usar más adelante en su código.

1234567 Sub AssignSumVariable ()Atenuar el resultado como doble'Asignar la variableresultado = WorksheetFunction.SUM (Rango ("G2: G7"), Rango ("H2: H7"))'Muestra el resultadoMsgBox "El total de los rangos es" & resultEnd Sub

Sumar un objeto de rango

Puede asignar un grupo de celdas al objeto Range y luego usar ese objeto Range con el Hoja de trabajo Función objeto.

123456789 Sub TestSumRange ()Atenuar como rango'asignar el rango de celdasEstablecer rng = Rango ("D2: E10")'usa el rango en la fórmulaRango ("E11") = WorksheetFunction.SUM (rng)'suelta el objeto de rangoEstablecer rng = NadaEnd Sub

Sumar objetos de rango múltiple

Del mismo modo, puede sumar varios objetos de rango.

123456789101112 Sub TestSumMultipleRanges ()Dim rngA como rangoDim rngB como rango'asignar el rango de celdasEstablecer rngA = Rango ("D2: D10")Establecer rngB = Rango ("E2: E10")'usa el rango en la fórmulaRango ("E11") = WorksheetFunction.SUM (rngA, rngB)'suelta el objeto de rangoEstablecer rngA = NadaEstablecer rngB = NadaEnd Sub

Sumar toda la columna o fila

También puede usar la función Suma para sumar una columna completa o una fila completa

Este procedimiento a continuación sumará todas las celdas numéricas en la columna D.

123 Suma de prueba secundaria ()Rango ("F1") = WorksheetFunction.SUM (Rango ("D: D")End Sub

Si bien este procedimiento a continuación sumará todas las celdas numéricas en la Fila 9.

123 Suma de prueba secundaria ()Rango ("F2") = WorksheetFunction.SUM (Rango ("9: 9")End Sub

Sumar una matriz

También puede usar WorksheetFunction.Sum para sumar valores en una matriz.

123456789101112 Sub TestArray ()Dim intA (1 a 5) como enteroDim SumArray como entero'poblar la matrizintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'suma la matriz y muestra el resultadoMsgBox WorksheetFunction.SUM (intA)End Sub

Uso de la función SumIf

Otra función de la hoja de trabajo que se puede utilizar es la función SUMIF.

123 Sub TestSumIf ()Rango ("D11") = WorksheetFunction.SUMIF (Rango ("C2: C10"), 150, Rango ("D2: D10"))End Sub

El procedimiento anterior solo sumará las celdas en el rango (D2: D10) si la celda correspondiente en la columna C = 150.

Fórmula de suma

Cuando usa el WorksheetFunction.SUM para agregar una suma a un rango en su hoja de trabajo, se devuelve una suma estática, no una fórmula flexible. Esto significa que cuando sus cifras en Excel cambian, el valor devuelto por el Hoja de trabajo Función no cambiará.

En el ejemplo anterior, el procedimiento TestSum ha sumado Rango (D2: D10) y el resultado se ha puesto en D11. Como puede ver en la barra de fórmulas, este resultado es una cifra y no una fórmula.

Si alguno de los valores cambia por lo tanto en el rango (D2: D10), el resultado en D11 será NO cambio.

En lugar de usar el WorksheetFunction.SUM, puede usar VBA para aplicar una función de suma a una celda usando el Fórmula o Fórmula R1C1 métodos.

Método de fórmula

El método de fórmula le permite apuntar específicamente a un rango de celdas, por ejemplo: D2: D10 como se muestra a continuación.

123 Sub TestSumFormulaRango ("D11"). Fórmula = "= SUMA (D2: D10)"End Sub

Método FormulaR1C1

El método FromulaR1C1 es más flexible en el sentido de que no lo restringe a un rango establecido de celdas. El siguiente ejemplo nos dará la misma respuesta que el anterior.

123 Sub TestSumFormula ()Rango ("D11"). FórmulaR1C1 = "= SUMA (R [-9] C: R [-1] C)"End Sub

Sin embargo, para hacer que la fórmula sea más flexible, podríamos modificar el código para que se vea así:

123 Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= SUMA (R [-9] C: R [-1] C)"End Sub

Dondequiera que se encuentre en su hoja de trabajo, la fórmula sumará las 8 celdas directamente encima y colocará la respuesta en su ActiveCell. Se debe hacer referencia al rango dentro de la función SUM mediante la sintaxis de Fila (R) y Columna (C).

Ambos métodos le permiten utilizar fórmulas dinámicas de Excel dentro de VBA.

Ahora habrá una fórmula en D11 en lugar de un valor.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave