Cargando...
La función SUMAPRODUCTO de Microsoft Excel es bastante desconocida, ciertamente no aporta un valor diferencial, no permite hacer cosas imposibles de realizar con otras fórmulas, pero simplifica de forma significativa como realizar algunos cálculos reduciendo el número de pasos necesarios.
Básicamente, la función SUMAPRODUCTO multiplica los elementos de varias matrices “por filas” y suma los resultados. Esta definición no dice mucho, pero es algo relativamente sencillo que nos puede servir para realizar complejas sumas condicionales si usamos un poco la imaginación y en un sólo paso. Lo veremos con algunos ejemplos.
Supongamos que tenemos el siguiente listado de ventas de productos:

¿Cómo calculamos el total de ventas?
Vamos a utilizar la función suma producto para realizarlo en sólo un paso. Nos situamos en una celda vacía y escribimos la siguiente fórmula:
=SUMAPRODUCTO(D2:D13*E2:E13)

La fórmula multiplica fila a fila la cantidad por el precio unitario y finalmente suma todos los resultados. Obtenemos el total de las ventas (8.285.255)
¿Cómo calculamos el total de ventas del mes 2?
Con la función de suma producto es sencillo. Partiendo de la fórmula usada en el ejemplo anterior, vamos a añadir la matriz de los meses (C2:C13) al producto de matrices, pero con algunos cambios. Tenemos que conseguir una matriz que cuando sea una fila del mes 2 multiplique por uno y cuando no sea del mes 2 multiplique por cero. Es decir, tenemos que crear una fórmula que convierta la columna del mes en una columna de ceros y unos como la siguiente.

Con la función SUMAPRODUCTO podemos añadir comparaciones/validaciones que nos devuelven un valor binario para cada fila que se procesa. La fórmula para calcular las ventas del mes 2 sería la siguiente:
=SUMAPRODUCTO((C2:C13=2)*D2:D13*E2:E13)
Dónde el resultado de C2:C13=2 es una matriz que tiene unos para las filas del mes 2 y el resto ceros. Finalmente, el resultado de la función SUMAPRODUCTO la suma de los productos dónde la matriz “C2:C13=2” no es cero.
Un paso más, la tabla dinámica
Después del ejemplo anterior, ahora vamos a obtener las ventas del Producto A en PYME en el mes 1. Es decir, Producto = “Producto A”; Sector=”PYME”; Mes = 1. La fórmula será la siguiente:
=SUMAPRODUCTO((A2:A13=“Producto A”)*(B2:B13=”PYME”)*(C2:C13=1)*D2:D13*E2:E13)
Esto no sirve de mucho, usemos una fórmula más reutilizable. Vamos a poner los valores “Producto A”, “PYME” y “1” en otras celdas y hacemos referencia a ellos en la fórmula.
Celda A15 = 1
Celda A18 = “Producto A”
Celda B17 = “PYME”
Celda B18 = “=SUMAPRODUCTO((A2:A13=A18)*(B2:B13=B17)*(C2:C13=A15)*D2:D13*E2:E13)”

Vamos cambiar la formula un poco. Fijamos las referencias a las matrices y el número del mes, para el producto sólo fijamos la columna y finalmente para el sector fijamos sólo la fila. El resultado es la siguiente fórmula:
=SUMAPRODUCTO(($A$2:$A$13=$A18)*($B$2:$B$13=B$17)*($C$2:$C$13=$A$15)*$D$2:$D$13*$E$2:$E$13)
Ahora ya podemos crear una tabla con más datos de productos y sectores en función del mes, tal y como se muestra en la siguiente imagen y únicamente tenemos que “arrastrar” la fórmula que hemos creado.

¿Os suena esto?, seguramente sí. Es muy parecido a una tabla dinámica de Excel, pero hemos tardado bastante más en construirla y no tiene el potencial de las tablas dinámicas. Personalmente, siempre utilizo una dinámica… ¿pero? ¿Entonces para que nos sirve la función SUMAPRODUCTO?
NOTA: No es cierto que una tabla dinámica siempre sea más rápida. En este ejemplo, hay que añadir una columna adicional a nuestro listado de ventas (contendrá el resultado de multiplicar las cantidades por los precios unitarios) para obtener con una tabla dinámica el mismo resultado.
Sacando partido a la función SUMAPRODUCTO
Cuando queremos obtener resultados complejos una tabla dinámica resulta insuficiente sin realizar cálculos previos o añadir columnas adicionales. Por ejemplo, ¿Cómo obtener el total de ventas de aquellos productos de los que hemos vendido entre 10 y 30 unidades?
Utilizando la fórmula SUMAPRODUCTO creada en el ejemplo anterior sustituimos la matriz de cantidades ($D$2:$D$13), por el siguiente producto de matrices: ($D$2:$D$13<30)*($D$2:$D$13>10)
La formula final es:
=SUMAPRODUCTO(($A$2:$A$13=$A18)*($B$2:$B$13=B$17)*($C$2:$C$13=$A$15)*($D$2:$D$13<30)*($D$2:$D$13>10)*$E$2:$E$13)
Si usamos la tabla que hemos creado en el ejemplo anterior y “arrastramos” la nueva fórmula nos queda la tabla como aparece en el siguiente ejemplo.
Con este último ejemplo hemos visto la verdadera potencia de la función SUMAPRODUCTO, a partir de este punto la imaginación al poder para realizar sumas condicionales de forma sencilla y rápida.
NOTA: Un ultimo consejo, si las matrices que usamos son muy grandes los cálculos suelen ser lentos, en estos casos es mejor usar tablas dinámicas generando columnas calculadas.
Imprime este post
12 comentarios sobre Sacando partido a la funcion SUMAPRODUCTO de EXCEL
[...] Sacando partido a la funcion SUMAPRODUCTO de EXCEL ——————————————————– Nos hemos mudado, puedes encontrar los últimos comentarios y correcciones al post en este enlace. [...]
Me encanta la sencillez de su explicación, ojala pudiera estar más en contacto con ustedes por que de verdad los necesito y sobre todo para las aplicaciones que he desarrollado y estoy desarrllollando en Access y SQL.
Espero tener respuesta en mi Email .
Mil Gracias.
Hola Orlando,
Muchas gracias por tu comentario, puedes proponernos todas las dudas mediante comentarios en Xperimentos. De esta forma dudas/soluciones también podrán ser útiles para otras personas que tengan los mismos problemas. (aun así si deseas comentarnos algo por correo electrónico puedes escribirnos a xperimentos-at- gmail-dot-com)
Ademas (y desafortunadamente
) no somos expertos en todo y aunque somos varios autores puede que no tengamos respuesta a alguna de tus preguntas. De ser asi, Internet es una herramienta muy poderosa y Xperimentos puede hacer humildemente de escaparate para tus dudas.
Una vez mas gracias por el comentario,
Lcflores
hola, aprendi algo nuevo que bien!
pero tengo una pregunta curiosa…
Ejemplo si quiero saber cuantas veces se repite una persona en una base de datos de ventas entre un rango de fechas como se hace?.. es que lo estoy haciendo similar al ejercicio pero no me sale nada.
me pueden colaborar con esto.
Gracias.
Hola Miyerlay,
Perdón por el retraso, pero he estado fuera unos días. Puedes usar fechas en la función SUMAPRODUCTO, pero tienes que asegurarte que tanto los datos como en la condición utilizas un dato que sea una fecha para que funcione correctamente.
a) En los datos, indica que son tipo fecha (formato de celda).
b) En la fórmula recomiendo que utilices la función FECHA para asegurarte que Excel interpreta el dato como una fecha. Puedes usar algo parecido a esto:
=SUMAPRODUCTO((A1:A27="Juan") *
(B1:B27>=FECHA(2006;1;1)) *
(B1:B27<FECHA(2007;1;1))
)
Esta fórmula calcularía cuantas filas tiene “Juan” en el año 2006.
hola, necesito ayuda urgente!, estoy realizando mi practica y me pidieron ahcer una planilla en excel. El problema que tengo es que en una hoja tengo los datos que se van ingresando diariamente, y necesito que en otra hoja al poner una fecha o un rango de fechas me muestre las personas y sus compras obtenidas en dicho periodo.
que función existe para realizar esa operación?
porfa ayudenme!!!!
chaos
Hola Sofia,
Las funcion de SUMAPRODUCTO sólo sirven para sacar datos agregados. Si lo que quieres es el detalle la opción más sencilla es utilizar filtros (en el menú de Excel Datos->Filtro).
Los filtros deben realizarse en la misma hoja donde están los datos. Si deseas que el detalle aparezca en otra hoja, la única solución que veo es una Macro de Excel.
Hola,
Muy buenas están las contribuciones que hacen, mi duda es esta:
Tengo una tabla ejemplo:
fecha 29 abril 2008
nombre apellido año de nacimiento edad
——- ——— —————— ——
José Valerio 28 oct 87
Jorge Rodrígez 25 feb 94
¿Cómo hago para calcular la edad de cada uno?, ¿con qué fórmula puedo sacar la edad?, suponiendo que la fecha es la celda F4 y el año de nacimento es la celda D8.
Les agradeceria mucho si me pudieran ayudar.
Tu pregunta es muy sencilla y no tiene nada que ver con el post de arriba, pero….
bueno te ayudaré, aunque corro el riesgo de crear un consultorio de Excel, cosa que entenderás que no sea mi objetivo (para eso hay foros).
1) Para saber la fecha actual:
=AHORA()2) Para calcular la diferencia entre dos fechas:
Simplemente réstalas, es decir,
=F4-D8.3) Ahora viene el problema el formato, como lo ponemos en años.
Sencillo, la resta de dos fechas nos devuelve un número, luego tenemos que poner a la celda formato número.
4) Pero, el número no tiene mucho sentido…
Cierto, el número tendrá una parte entera que ira en función de los días y una parte decimal en función de las horas. Luego para saber los años sólo hay que dividir por 365.
5) Ahora todo junto:
=(Ahora()-D8)/365te ayudaré
[...] Archivo del Blog » Superamos las 10.000 visitas en un mes en ¡Nos estrenamos!lcflores en Sacando partido a la funcion SUMAPRODUCTO de EXCELlcflores en Barra de progreso para Macros de Excelsalsiria en Barra de progreso para Macros de [...]
Hola! he empezado un trabajo nuevo y voy un poco loca con las funciones de excel.Hay una hoja elaborada por mi antecesor en el puesto que contiene la siguiente función =SUMAPRODUCTO(–($A$27:$A$523=$C11);–($B$27:$B$523=$B11);(E$27:E$523)).
Sobre todo quiero saber que significan los 2 guioncitos –, puesto que solo eso cambia la función.Gracias
Hola Inma,
Perdona el retraso en responder, el verano es lo que tiene.
Respecto a los dos “guioncitos”. No creo que puedan ser guiones, puesto que Excel no los admite en las fórmulas y dará error. Por lo tanto, creo que los dos guioncitos corresponden realmente a dos “signos menos”.
Como has visto en el ejemplo, una de las técnicas con la función SUMAPRODUCTO es obtener una matriz de 1s y 0s para luego multiplicar las filas de las matrices cuando coinciden los valores. También verás en mi ejemplo que para separar las matrices utilizo un signo “*” que hace la conversión de los valores “VERDADERO/FALSO” a 1s y 0s.
Sin embargo, en tu fórmula utilizas “;” , es una solución pero el problema es que si quitamos los dos “signos menos” el resultado de las comparaciones nos devolverá una matriz “VERDADERO/FASO” en texto y no se convertirá a número. El resultado será 0 o un ERROR.
Cuando añades los dos “signos menos” fuerzas a que el texto se convierta en un número. Afortunadamente como es -1 * -1 el resultado no cambia de signo, pero no me parece una buena solución.
Conclusión: Yo quitaría los signos y sustituiría los “;” por “*”, el resultado será el mismo, pero mucho más claro.
Hasta la próxima,
Lcflores
Deja tu comentario sobre Sacando partido a la funcion SUMAPRODUCTO de EXCEL
*Nota: Sólo se tendrán en cuenta los comentarios correctamente redactados y que estén relacionados con el tema de la entrada.RSS a los comentarios de esta entrada · TrackBack URI