Función WorksheetFunction.Sum
La Función WorksheetFunction.Sum nos permite obtener el resultado de la suma de los argumentos ingresados a la función, esta función devuelve el resultado el cual es del tipo DOUBLE. Los tipos de argumentos que acepta esta función son del tipo numérico, bolean (verdadero, falso) donde VERDADERO tendrá el valor de ‘1’ y FALSO el valor de ‘0’. Además, la función WorksheetFunction.Sum en VBA solo acepta 30 argumentos como máximo y un argumento como mínimo.
Si solo si un argumento esta compuestos por un rango de celdas, es decir, el argumento es un vector , la función WorksheetFunction.Sum solo tomara en cuenta los valores numéricos de este argumento, en otras palabras ignorara los componentes del vector que sean del tipo lógico (VERDADERO o FALSO), las celdas vacías, y los textos contenidos en el vector.
Sintaxis:
Application.WorksheetFunction.Sum(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20,Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)
Si utilizamos mas de 30 argumentos en la función , nos mostrara el siguiente error:
Ejemplo 1
Aplicar la función WorksheetFunction.Sum con un rango de celdas
(Para mayor visualización de la imagen, hacer click en la misma)
Lo que hace este código es leer los valores de las celdas desde A1 hasta A10, luego aplicamos la función WorksheetFunction.Sum
e imprimimos el resultado en la celda C1 y lo mostramos en un message box.
Obteniendo el siguiente resultado:
Ejemplo 2
Aplicar la función WorksheetFunction.Sum con un rango de celdas (que incluya celdas vacías y valores lógicos), con un argumento numérico, y con un argumento lógico.
(Para mayor visualización de la imagen, hacer click en la misma)
(Para mayor visualización de la imagen, hacer click en la misma)
Esta función carga los valores de A1 hasta A5 y lo asigna a una variable(vector),carga un valor numérico constante y lo asigna a la variable "b" y carga el valor de la celda B1 (valor numérico).Finalmente, Suma todos estos argumentos con un argumento de valor lógico (en este caso TRUE=1).
La función WorksheetFunction.Sum ignorara las celdas vacías y los valores lógicos ,en este caso lo valores lógicos del primer argumento, cabe resaltar que la ya mencionada función suma el valor lógico del ultimo argumento , el cual hace que el resultado de la suma final se 124.1
Usando un messagebox imprime el resultado.
Autor: Carlos Perez Rodriguez
27/03/2015 a las 6:03 pm
En el ejemplo 2 , tengo una duda, cuando usan como argumento el valor lógico True.
Resultado = Application.WorksheetFunction.Sum(a, b, c, True)
si la función worksheetFuntion.sum ignora las celdas vacías y valores lógicos.
25/04/2018 a las 1:47 pm
No es necesario usar el argumento condicional True, ya que el valor lógico de esta condición también se sumara al rango de datos del argumento, cabe indicar que True es =1, entonce al poner como argumento el condicional True se estaría sumando 1 al rango de datos, incluso si no hubiera ninguna cantidad en el rago de datos que estamos utlizando como argumento el resultado será 1 en vez de cero.
15/05/2015 a las 4:38 pm
Que función reemplazaría a esta, si es que tengo más de 30 argumentos y estos no tienen posición fija sino van cambiando de forma iterativa cada 4 o 5 casillas. Muchas gracias por su atención.
22/05/2015 a las 12:55 am
Hola Jorge
Posiblemente sea necesario usar un FOR para recorrer todo el contenido que posiblemente deba ser considerado, dentro del for un IF para determinar si debe ser incluído en el cálculo o no ... y dentro del IF un acumulador, que puede ser la función aqui descrita.
Saludos.
25/04/2018 a las 2:13 pm
Creo que estan estableciendo cambios sobre funciones inalterables, si quieren contar los valores lógicos utlicen otra funció “Contar Si” y listo, un ejemplo:
Set myrange = Worksheets("Hoja1").Range("A1:A45")
respuesta = Application.WorksheetFunction.Sum(myrange)
respuesta2 = Application.CountIf(myrange, 1)
MsgBox "La suma total del rango es: " & respuesta & " y la cantidad del valor lógico es: " & respuesta2
16/11/2018 a las 4:23 pm
Solo suma valores en el formato numérico si los transformo en el formato de moneda me sale cero porque ?
24/10/2019 a las 8:49 am
Bueno dias..
Como podria aplicar un a Macros que me permita sumar o consolidar datos de hojas de varios libros ejemplo:
hoja 1 del libro 1 + hoja 1 del libro 2 + hoja 1 del libro 3
Cada hoja tiene una planilla igual
Se podra realizar?
saludos cordiales
12/05/2020 a las 3:19 pm
Hola. Como haría para hacer una sumatoria en una base de datos de excel cargada dinamicamente por un formulario
06/08/2020 a las 11:56 am
buenas ,como hago para que me sume un rango dado con APPLICATION.inputbox ,y me coloque la formula suma de forma(Rx:Cx) en la celda de abajo,es decir si vuelvo y corro la macro ,puedo meter otro rango diferente , e igual me suma, asi sean 2 celdas o 20 0 50 celdas ..gracias rene