Sumar y contar con varias condiciones en Excel

Una pregunta que recibo frecuentemente es cómo sumar y contar con varias condiciones en Excel. Cuando estás en esta situación nuestra reacción es utilizar las funciones SUMAR.SI y CONTAR.SI pero pronto nos damos cuenta de que no son el camino correcto.

Si tienes Excel 2007 o una versión superior, entonces puedes utilizar la función SUMAR.SI.CONJUNTO y la función CONTAR.SI.CONJUNTO, de lo contrario puedes utilizar alguno de los métodos que presento a continuación.

Limitaciones de SUMAR.SI y CONTAR.SI

Las funciones SUMAR.SI y CONTAR.SI no nos ayudan a sumar y contar con varias condiciones en Excel porque solo pueden contener una sola condición. Observa la siguiente tabla de datos:

Sumar y contar con varias condiciones en Excel

La función SUMAR.SI funciona correctamente si quiero conocer las ventas del mes de Enero para lo cual puedo utilizar la siguiente fórmula:

=SUMAR.SI(A2:A12, "Enero", D2:D12)

Si quiero contar el número de ventas en el mes de Marzo utilizo la siguiente fórmula:

=CONTAR.SI(A2:A12, "Marzo")

Sin embargo, ¿cómo puedo sumar las ventas del mes de Enero de la región Norte? A continuación veremos dos alternativas para sumar con varias condiciones en Excel.

Sumar con varias condiciones utilizando SUMA

La primera alternativa para sumar con varias condiciones es utilizar la función SUMA. Observa con detenimiento la siguiente fórmula:

=SUMA((A2:A12="Enero") * (B2:B12="Norte") * D2:D12)

Antes de explicar esta fórmula debo decir que para que funcione correctamente debemos utilizarla como una fórmula matricial por lo que después de introducirla en la barra de fórmulas debemos pulsar la combinación de teclas Ctrl + Mayus + Entrar.

En la formula anterior encontrarás que las condiciones se encuentran encerradas entre paréntesis. La condición (A2:A12=”Enero”) será verdadera solamente cuando el valor de la columna A tenga el valor “Enero”. De la misma manera, la condición (B2:B12=”Norte”) será solamente verdadera precisamente cuando la celda de la columna B tenga el valor “Norte”.

El resultado de ambas condiciones es multiplicado y recordando la lógica binaria sabemos que al multiplicar verdadero por verdadero obtendremos como resultado un valor verdadero (uno). Si cualquiera de los factores de la multiplicación es falso obtendremos un valor falso (cero) como resultado.

De esta manera, solo en caso de que ambas condiciones sean verdaderas (igual a uno) obtendremos un valor diferente a cero al realizar la multiplicación por la columna D. Si cualquier condición es falsa, la columna D será multiplicada por cero y no tendrá efecto alguno en la suma total. Observa el resultado de aplicar la fórmula antes descrita:

Sumar con varias condiciones en Excel utilizando la función SUMA

Sumar con varias condiciones utilizando SUMAPRODUCTO

Si conoces la manera en que opera la función SUMAPRODUCTO, te habrás dado cuenta de que opera de manera similar a la fórmula que acabamos de revisar. Es por ello que también podemos sumar con varias condiciones en Excel utilizando la función SUMAPRODUCTO.

=SUMAPRODUCTO((A2:A12="Enero")*1, (B2:B12="Norte")*1, D2:D12)

Observa que las condiciones son las mismas que en la fórmula anterior. La única diferencia es que hacemos la multiplicación de cada condición por 1 para asegurar que tendremos valores numéricos. Observa el resultado de esta función:

Sumar con varias condiciones en Excel con la función SUMAPRODUCTO

Contar con varias condiciones utilizando SUMA

Aunque parezca raro, podemos contar con varias condiciones en Excel utilizando la función SUMA. La fórmula para lograrlo es la siguiente:

=SUMA((A2:A12="Enero") * (B2:B12="Norte"))

Esta fórmula es parecida a la primera que revisamos con la diferencia de que no estamos haciendo la tercera multiplicación por la columna D. Esta función contará las celdas que cumplen con ambas condiciones. Observa el resultado:

Contar con varias condiciones en Excel con la función SUMA

Para que esta fórmula funcione debemos pulsar la combinación de teclas Ctrl + Mayus + Entrar ya que debe ser una fórmula matricial.

Contar con varias condiciones utilizando SUMAPRODUCTO

Te podrás imaginar que también podemos utilizar la función SUMAPRODUCTO para contar con varias condiciones. Esta es la fórmula:

=SUMAPRODUCTO((A2:A12="Enero")*1, (B2:B12="Norte")*1)

El resultado de esta fórmula es el esperado:

Contar con varias condiciones en Excel con SUMAPRODUCTO

Limitaciones de este método

La única limitación que tienen los métodos expuestos en este artículo es que no es posible sumar y contar con varias condiciones bajo la misma columna. Es decir, no podemos poner dos condiciones para una sola columna, como por ejemplo sumar las ventas de Enero y Febrero. Estas son dos condiciones para una misma columna.

En un caso como este, la mejor opción es utilizar dos veces la función SUMAR.SI de la siguiente manera:

=SUMAR.SI(A2:A12, "Enero", D2:D12) + SUMAR.SI(A2:A12, "Febrero", D2:D12)

Artículos relacionados
Fórmulas matriciales en Excel
La función SUMAPRODUCTO en Excel

42 pensamientos en “Sumar y contar con varias condiciones en Excel

  1. Elina

    Muchas gracias, no puedo creer que errores tan simples puedan complicar tanto una formula sencilla, su explicacion hizo que me diera cuenta de mi error y me salvo el dia.

  2. Guilermo Rodriguez

    Muy práctico, simple y muy sencilla la explicación. Les agradecería mucho como en muchas ocasiones, si publicaran sobre la función SUMAR.SI.CONJUNTO
    He tenido algunas complicaciones y más cuando uso celdas combinadas.

  3. Fabrizzio

    Como puedo contar si tengo un rango de datos y quiero que solo cuento aquellos que sean menor a un número. Pero sin expresar el numero, sino el resultado de una formula =C1-2 ??
    Ejemplo:
    =CONTAR:SI(A1:A20,”>C1-2″) ??

    1. Moisés Ortíz Autor

      Hola Fabrizzio, utiliza la siguiente fórmula:
      =CONTAR:SI(A1:A20,”>” & C1-2)

      Lo importante es concatenar el signo “>” utilizando el caracter &.

      1. Raul

        Excelente respuesta. Llevaba muchas pruebas y búsquedas y no le atinaba. La frustración me hizo copiar la fórmula y editar renglón por renglón para tener el número correcto, pero tu propuesta me salvó el día. Gracias

  4. Sergio

    Que tal amigo, te felicito nuevamente, este tipo de ayuda que brindas esta super, es como tener un maestro por internet, es mucha la ayuda que proporcionas, me han servido muchisimo las herramientas de excel y esto me facilita y le facilito el trabajo a mis compañeros porque les hago mas facil su trabajo, gracias

  5. Sergio

    si tengo en una lista repetido varias veces el nombre de una persona, y quiero sacar una relacion pero en un concentrado que aparezca una sola vez, que formula tengo que utilizar, mi gracias…

  6. Juan Angel

    Muchas gracias, hace tiempo estaba buscanto una formula parecida. Sinceramente muchísimas gracias.

  7. martha

    Felicidades Moisés, como me ha ayudado tu página.

  8. Ruth

    Hola Moisés,

    muy buena tu explicación y las distintas posibiliades para calcular esto. Estoy intentando hace horas de hacer algo así, pero no me resulta. Ahora le puse la fórmula que tú propusiste y Excel corrige automáticamente el coma después del primer *1 por un ; o un *. Muestra que el resultado es 0 aunque debería haber una suma. Te muestro mi fórmula: =SUMAPRODUCTO((‘Ventas 13′!B2:B300=”Januar 2013″)*1;(‘Ventas 13′!F2:F300=”CD”)*1;K2:K300)
    Tienes alguna idea a qué se debe?
    Gracias de antemano!

    1. Moisés Ortíz Autor

      Hola Ruth, el punto y coma (;) se debe a la configuración regional de tu equipo y no afecta en lo absoluto al resultado.
      El problema debe estar en otro lado y lo único que se me ocurre es la comparación que estas haciendo con “Januar 2013″. Si las celdas de la columna B son fechas, entonces no habrá coincidencias porque la comparación la estas haciendo como si la columna B tuviera texto y son dos cosas diferentes.

  9. MACARENA

    Me gustaría que me ayudárais con esta fórmula que no paro de darle vueltas. Se trata de una tabla en la que necesitaría saber cuántas gruas tendría disponibles en unos determinados tramos horarios, cada uno de los días de la semana. Me explico: para cada indicativo de grua, por ejemplo G-1, G-2… y día de la semana, con los horarios comprendidos entre 23:00-07:00, 07:00-15:00 y 15:00-23:00, necesitaría saber cuántas gruas habría en el tramo horario 23:00-03:00, por ejemplo. Estoy utilizando la fórmula =CONTAR.SI($B$1:$B$11;”>23:00 & <03:00"), y no me sale. Me dáis alguna idea??? Gracias.

    1. Moisés Ortíz Autor

      Hola Macarena, el problema es que 23:00 hrs. pertenece a un día (por la noche) y 3:00 hrs. es del siguiente día (por la madrugada) y a los ojos de Excel tu condición jamás se cumplirá porque ninguna hora del mismo día es menor a 3 y al mismo tiempo mayor a 23. Será necesario que involucres la fecha completa en tu condición.

  10. Rodmary

    Si tengo varios criterios que deseo sumar con que formula lo hago.
    Ejemplo: Tengo como categorías A, B, C, y D y sólo quiero sumar los montos de las categoría B y D.

    Gracias

    1. Moisés Ortíz Autor

      Hola Rodmary, supongo que las categorías son una sola columna en tu tabla de datos. En ese caso debes sumar primero los valores de la categoría B y después la categoría D. Por ejemplo, si los valores a sumar están en la columna A y las categorías en la columna B puedes utilizar una fórmula como la siguiente:
      =SUMAR.SI(B2:B6,”B”, A2:A6) + SUMAR.SI(B2:B6,”D”, A2:A6)

  11. Liz

    Hola quiero realizar la siguiente función pero no encuentro como, quiero tomor una columna a de una hoja en Excel = a otra columna a de la otra hoja si es igual que sume lo de otra hoja y arroje el resultado, pero no se que formula utilizar.

    gracias

    1. Moisés Ortíz Autor

      Hola Liz, ya que requieres hacer una comparación debes utilizar la función SI y en caso de ser verdadera realizar la suma. La fórmula es la siguiente:
      =SI(Hoja1!A1 = Hoja2!A1, Hoja1!A1 + Hoja2!A1)

  12. Vero Tapia

    Hola, buen día, disculpa como puedo contar y sumar con tres condiciones cuando una de ellas es un campo de fecha, es decir, sumar cuentas que pertenezcan a cierto grupo de cierta sucursal y sean cuentas aperturadas en el mes de septiembre por ejemplo.

    Saludos y de antemano gracias.

      1. Vero Tapia

        Gracias por el aporte. Saludos

  13. Eduardo

    estoy revisando el foro y lo encontre tremendamente interesante y necesario…
    el excel es una tremenda herramienta…
    estoy medio complicado con una formula.. usando contar.si
    tengo un rango de valores que va desde e1:e850 de una tabla
    y quiero contar cuantos montos hay entre 2 valores determinados
    particularmente cuantos hay entre 100 y 150
    he probado varias opciones y esta es como la mas cercana pero aun no funciona

    =CONTAR.SI(E1:E850;”>100 & <150")

    si me pueden dar alguna referencia se los agradeceria
    muchas gracias

    1. Moisés Ortíz Autor

      Hola Eduardo, el criterio “>100 & <150" es inválido en Excel. Además, la función CONTAR.SI solo acepta un criterio y en tu caso son dos. Una alternativa es utilizar la función CONTAR.SI.CONJUNTO:
      =CONTAR.SI.CONJUNTO(E1:E850;">100″; E1:E850; “<150″)

  14. JOSE MARIA DIAZ

    Hola :
    Tengo un poblema con EXCEL 2003 , tengo que contar de 2 columnas las coincidencias.
    Pero ningun ejemplo de aqui me funciona.
    Par el exel 2003 no funciona el contar.si.conjunto , que puedo hacer ?

    1. Moisés Ortíz Autor

      Hola Jose María, la función CONTAR.SI.CONJUNTO no está disponible en Excel 2003.
      Intenta con el método de la función SUMAPRODUCTO, está probado que funciona correctamente en Excel 2003.

  15. Rocio

    ¡Hola!
    Muchas gracias, no podía encontrar una fórmula para realizar lo que necesito.
    Sin embargo, no logro que la fórmula de Sumar con varias condiciones funcione. Tengo Excel 2003, y mi pregunta es esta:
    En la columna O tengo anotada la moneda, en la columna T, las fechas en que se cobran ciertos montos, y los totales están en la columna N.
    Cuando ingreso la fórmula, me aparece valor cero.

    =SUMA((‘Ene-13′!O3:O41=”Dólares”)*(‘Ene-13′!T3:T41=”14/02/2013″)*’Ene-13′!N3:N41)

    Creo que el problema es que es la condición es una fecha. ¿Crees que me podrás ayudar?

    ¡Gracias!

    1. Moisés Ortíz Autor

      Hola Rocio, efectivamente el problema es la condición de la fecha porque se intenta hacer una comparación como si fuera cadena de texto cuando en realidad las fechas son un valor numérico. La solución es utilizar el valor numérico de la fecha, que en este caso para 14/02/2013 es el valor 41319. La fórmula entonces quedaría de la siguiente manera:
      =SUMA((‘Ene-13′!O3:O41=”Dólares”) * (‘Ene-13′!T3:T41=41319) * ‘Ene-13′!N3:N41)

      Para saber cómo obtener el valor numérico de una fecha consulta el siguiente artículo:
      http://exceltotal.com/fechas-en-excel/

  16. Daniel B.C.

    Hola, no consigo realizar una función condicional, parece sencilla ,pero no consigo dar con ella.
    El caso es que quiero una función que al introducir un valor en una celda numérica esta me calcule si esta dentro de de la tolerancia de un plano ej. 253 ±0.1 mm. (Aceptable o No aceptable)
    Gracias

    1. Moisés Ortíz Autor

      Hola Daniel, suponiendo que el valor evaluado está en la celda A1, puedes utilizar la siguiente fórmula:
      =SI(Y(A1>252,9; A1<253,1); “Aceptable”; “No Aceptable”)

  17. JOHNBO

    Gracias. Me acabas de ayudar a salir de un gran embrollo.

  18. Juan

    Si quiero que sume los valores de una columna pero con la excepción de un criterio, como hago?
    Saludos

    1. Moisés Ortíz Autor

      Hola Juan, utiliza el operador <> para indicar que deseas sumar los valores que sean diferentes al valor indicado, por ejemplo, la siguiente fórmula suma los valores de la columna D cuyo valor de la columna A es diferente a Enero:
      =SUMA((A2:A12<>“Enero”) * D2:D12)

  19. revluna

    Hola Moises,
    Tengo una fecha en una celda llamada MATRICULACION y tenemos otra celda llamada ITV, lo que queremos hacer es que cuando añadimos la fecha de matriculación automáticamente en la celda ITV nos salga cuando sera. Hemos intentado hacerlo simple sumando años pero nos da error al hacer la comparación de la fecha, es decir que cuando ponemos la fecha matriculación compare con la fecha actual para así saber exactamente la ITV ya que cambiara si es excepto, 4 años, 2 años…
    La celda MATRICULACION y ITV seria asi
    MATRICULACION ITV
    20-3-2012 20-3-2016 pondriamos la fecha de matriculación y automáticamente en la celda ITV compararía la fecha de matriculación con la fecha actual y nos daría pues 4 años ya que la normativa dice lo siguiente :
    Los automoviles :
    Menos de 4 años en comparación a la fecha de matriculación estara excento con lo que no saldrá fecha el la celda ITV
    De 4 a 10 años en comparación a la fecha de matriculación con la fecha actual se sumaria 2 años a la fecha en la celda ITV
    Más de 10 años en comparación a la fecha de matriculación con la fecha actual se sumaria 1 año a la fecha en la celda ITV
    Muchas gracias

    1. Moises Ortiz Autor

      Hola revluna, lo mejor sería obtener la cantidad de años utilizando la función SIFECHA. Si no conoces esta función te recomiendo leer el siguiente artículo:
      http://exceltotal.com/calcular-el-tiempo-transcurrido/

      Tengo además otro artículo donde muestro el uso de esta misa función para obtener la diferencia entre dos fechas en años, meses y días, pero al final de dicho artículo hay un ejemplo de como calcular la edad, que es la diferencia entre una fecha del pasado y la fecha actual (HOY) y creo que ese cálculo es el mismo que necesitas. El artículo lo encuentras aquí:
      http://exceltotal.com/calcular-anos-meses-y-dias-entre-dos-fechas-en-excel/

      Por supuesto, una vez que obtengas la cantidad de años entre ambas fechas, tendrás que utilizar la función SI anidada para validar si el valor es menor a 4, entre 4 y 10 o mayor a 10. Si no estás familiarizado con este uso de la función SI te recomiendo ver el siguiente tutorial:
      http://exceltotal.com/tutorial-excel-2010-funcion-si-anidada/

  20. Patricio

    gracias me sirvió de mucho para contar con varias condiciones en Excel

  21. Pinxet

    Hola Moisés, tengo el excel 2003 estoy implementado la función SUMAR.SI pero necesito hacerlo sobre un rango de fechas determinada entre 1-04-14 y 1-08-14
    ejemplo =SUMAR.SI(A2:A6; “>=41759, <=41882"; B2:B6 )
    como esto supone otra condición no la puedo realizar con esta versión de excel (evidentemente el valor intermedio de la función está mal era para que comprendieras lo que necesito hacer y como).
    ¿Se te ocurre alguna solución ha este problema, sabes si puedo iterpolar otra condición intermedia?
    Gracias.

    1. Moises Ortiz Autor

      Hola Pinxet, no me queda claro si ya implementaste alguno de los métodos descritos en este artículo. Estos métodos son precisamente para versiones de Excel que no tienen la función SUMAR.SI.CONJUNTO como es tu caso. De todas formas, otra posibilidad aparte de las descritas en el artículo sería sumar las fechas mayores al límite superior y restarle la suma de las que son menores al límite inferior, por ejemplo:
      =SUMAR.SI(A1:A9, “>31/01/14″) – SUMAR.SI(A1:A9, “<01/01/2014″)

      1. Pinxet

        Gracias Moises, lo hice así y funcionó correctamente!!

  22. Carlos

    Tengo valores en varias columnas, algunas celdas no regsitran valor. Deseo sumarlas y que se dividan para la cantidad de celdas que si tienen valor, podrian ayudarme. Gracias de antemano

  23. MaFE

    Como puedo hacer una formula que me cuente con tres condiciones, tengo esta pero no me sale:
    =contar.si((H2:H150;”Martha Mera”),(I2:I150;”Citas”),(M2:M150;”pendiente”))

    1. Moisés Ortíz Autor

      Hola MaFE, no es posible contar con varias condiciones utilizando la función CONTAR.SI. En todo caso utiliza la función CONTAR.SI.CONJUNTO o alguno de los métodos mostrados en este artículo que hacen uso de la función SUMA o SUMAPRODUCTO.