Bob necesita usar la función SUM en una macro para encontrar la suma de todos los valores en una columna. El problema es que el número de celdas a sumar variará; para una ejecución de la macro podrían ser 100 celdas, mientras que en la siguiente podrían ser 300 y en la tercera solo 25.

Primero, es fácil usar la mayoría de las funciones de la hoja de trabajo (como SUM) desde una macro. Todo lo que necesita hacer es anteponer el nombre de la función con «Application.WorksheetFunction». o simplemente «WorksheetFunction». Por lo tanto, si sabe que cada ejecución de la macro requerirá sumar A1: A100, luego A1: A300 y finalmente A1: A25, podría usar una macro como esta:

Public Sub Sum_Demo()

Dim myRange     Dim Results     Dim Run As Long

For Run = 1 To 3         Select Case Run         Case 1             myRange = Worksheets("Sheet1").Range("A1", "A100")

Case 2             myRange = Worksheets("Sheet1").Range("A1", "A300")

Case 3             myRange = Worksheets("Sheet1").Range("A1", "A25")

End Select         Results = WorksheetFunction.Sum(myRange)

Range("B" & Run) = Results     Next Run End Sub

Esta macro usa un For. . . Siguiente ciclo para especificar diferentes rangos de celdas a sumar. Luego usa la función de la hoja de trabajo SUM para asignar la suma a la variable Resultados, que (finalmente) se coloca en una celda en la columna B. Los resultados de la primera ejecución se colocan en B1, el segundo en B2 y el tercero en B3 .

Si bien esta macro en particular puede no ser tan útil, muestra varias técnicas útiles, como cómo definir un rango con nombre, cómo usar la función SUMA y cómo introducir la suma en una celda. Lo que la macro no hace es mostrar cómo seleccionar un número variable de celdas para sumar. Para hacer esto, es mejor confiar en el método End del objeto Range. La siguiente línea de código muestra cómo puede rellenar la suma del rango comenzando en A1 y extendiéndose hasta justo antes de la primera celda en blanco en la columna:

myRange = ActiveSheet.Range("A1", Range("A1").End(xlDown))

Range("B1") = WorksheetFunction.Sum(myRange)

Tenga en cuenta que un rango (myRange) se define comenzando con A1 y extendiéndose hasta lo que sea que devuelva el método End. Luego, esto se suma y se rellena en B1.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (9180) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Using_SUM_In_a_Macro [Usando SUM en una macro].