lunes, abril 25, 2016

Suma condicional de fechas en Excel

Este post viene a colación de una consulta sobre cómo totalizar valores por fechas con más de una condición, más específicamente, entre dos fechas.
Excel pone a nuestra disposición varias herramientas: fórmulas, tablas y tablas dinámicas. Hacer el cálculo con tablas o tablas dinámicas no ofrece mayores inconvenientes. Por ejemplo, si hemos organizado los datos en forma de Tabla, podemos usar el filtro y la opción de Fila de Totales para ver el total de los valores del primer semestre del año



En una tabla dinámica creada con los mismos datos aplicamos también el filtro de fechas


Si queremos o tenemos que usar fórmulas, nos toparemos con dos "bemoles":

  1. la forma en que Excel maneja la fechas dentro de las fórmulas (tema que ya tratamos en el pasado remoto de este blog);
  2. el uso de operadores del tipo "mayor que", "igual", etc. dentro de fórmulas.
Si queremos hacer con funciones el cálculo mostrado más arriba podemos usar SUMAPRODUCTO o SUMAR.SI.CONJUNTO, ya que tenemos dos condiciones.

Con SUMAPRODUCTO usamos 

=SUMAPRODUCTO((B3:B62>=FECHA(2016,1,1))*(B3:B62<=FECHA(2016,3,31))*C3:C62)


La función FECHA convierte la fecha del criterio, por ejemplo 01/01/2016 en su número de serie (42370) ya que esa es la forma en que Excel maneja las fechas.

Si queremos usar SUMAR.SI.CONJUNTO usamos

=SUMAR.SI.CONJUNTO(C3:C62,B3:B62,">="&FECHA(2016,1,1),B3:B62,"<="&FECHA(2016,3,31))
donde podemos ver que concatenamos el operador ">=" con el numeral de la fecha usando el operador &.



3 comentarios:

  1. ¡Buenas!

    Muy interesante, como siempre. Un apunte, cuando usamos fórmulas:

    Yo suelo utilizar dos celdas auxiliares donde pongo la fecha inicial y la fecha final, así no hay que utilizar la función fecha:

    =SUMAR.SI.CONJUNTO(C3:C62;B3:B62;">="&F2;B3:B62;"<="&G2)

    Y si quiero escribir el intervalo en la fórmula, tal vez es más sencillo:

    =SUMAR.SI.CONJUNTO(C3:C62;B3:B62;">=01/01/2016";B3:B62;"<=10/01/2016")
    sin necesidad de concatenar ni utilizar función fecha.

    ResponderBorrar
  2. Hola, primero muchas gracias por tantos aportes, son de gran ayuda para todos. Mi consulta es la siguiente en una hoja ingreso x fila: a) lugar; b) Fecha de Inicio y c) Fecha de Fin. Quiero que, en una celda contigua a los datos mencionados, luego de ingresar: lugar, y la fecha de inicio y fin, si: para el rango de fecha ingresado y lugar se repite algún día y me lo informe. Trato de usar sumar.si.conjunto pero no puedo establecer algún criterio para que realice lo que acá pido. GRACIAS

    ResponderBorrar
  3. Tendrías que usar CONTAR.SI. Lo más sencillo es crear una columna auxiliar con valores concatenadas de fechas y lugar (usando el operador &) y luego aplicar CONTAR.SI, donde el rango de conteo es el que contiene los valores concatenados y el criterio es la celda evaluada. Por ejemplo, si el rango con los valores concatemados es B2:B300, la f´rmula sería =CONTAR.SI($B$2:$B$300,B2).

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.