Uso de SUM en una macro (Microsoft Excel)
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 (3217) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posteriores) aquí:
link: / excelribbon-Using_SUM_In_a_Macro [Usando SUM en una macro]
.