lunes, 8 de junio de 2020

EXCEL: Contar fechas por día de la semana

Excel formula: Count dates by day of week

Fórmula genérica

=SUMAPRODUCTO(--(DIASEM(dates)=day_num))

Explicación

Para contar las fechas por día de la semana (es decir, contar los lunes, martes, miércoles, etc.), puede usar la función SUMAPRODUCTO junto con la función DIASEM. En el ejemplo que se muestra, la fórmula en F4 es:

=SUMAPRODUCTO(--(DIASEM(dates,2)=E4))

Nota: "fechas" es el rango nombrado B4: B15.

Cómo funciona esta fórmula

Quizás se pregunte por qué no estamos usando CONTAR.SI o CONTAR.SIs. Estas funciones parecen ser la solución obvia. Sin embargo, sin agregar una columna auxiliar que contenga un valor entre semana, no hay forma de crear un criterio para CONTAR.SI para contar los días de la semana en un rango de fechas.

En cambio, utilizamos la función versátil SUMAPRODUCTO, que maneja los arreglos con gracia sin la necesidad de usar Control + Shift + Enter.

Estamos usando SUMAPRODUCTO con un solo argumento, que consiste en esta expresión:

--(DIASEM(dates,2)=E4)

Trabajando de adentro hacia afuera, la función DIASEM se configura con el argumento opcional 2, lo que hace que devuelva los números 1-7 para los días de lunes a domingo, respectivamente. Esto facilita la lista de los días en orden con los números en la columna E en secuencia.

DIASEM luego evalúa cada fecha en el rango con nombre "fechas" y devuelve un número. El resultado es una matriz como esta:

{1;3;7;1;5;2;7;1;7;5;4;7}

Los números devueltos por DIASEM se comparan con el valor en E4, que es 1:

{1;3;7;1;5;2;7;1;7;5;4;7}=1

El resultado es una matriz de valores VERDADERO / FALSO.

{VERDADERO;FALSO;FALSO;VERDADERO;FALSO;FALSO;FALSO;VERDADERO;FALSO;FALSO;FALSO;FALSO}

SUMAPRODUCTO solo funciona con números (no texto o booleanos), por lo que usamos el doble negativo para forzar los valores VERDADERO / FALSO a uno y ceros:

{1;0;0;1;0;0;0;1;0;0;0;0}

Con una sola matriz para procesar, SUMAPRODUCTO suma los elementos y devuelve el resultado, 3.

Manejo de fechas en blanco

Si tiene celdas en blanco en la lista de fechas, obtendrá resultados incorrectos, ya que la función DIASEM devolverá un resultado incluso cuando no haya fecha. Para manejar celdas vacías, puede ajustar la fórmula de la siguiente manera:

=SUMAPRODUCTO((DIASEM(dates,2)=E4)*(dates<>""))

Multiplicar por la expresión (fechas <> "") es una forma de cancelar las celdas vacías.


Comentarios en Facebook


0 comentarios:

Copyright © 2021 TRUJILLOSOFT