Fórmula de Excel: contar los días de la semana entre fechas -

Tabla de contenido

Fórmula genérica

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(start&":"&end)))=dow))

Resumen

Para contar los días de la semana (lunes, viernes, domingos, etc.) entre dos fechas, puede usar una fórmula de matriz que usa varias funciones: SUMPRODUCT, WEEKDAY, ROW e INDIRECT. En el ejemplo que se muestra, la fórmula en la celda E6 es

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(B6&":"&C6)))=D6))

En la versión genérica de la fórmula, inicio = fecha de inicio, fin = fecha de finalización y dow = día de la semana.

Explicación

Básicamente, esta fórmula usa la función WEEKDAY para probar varias fechas para ver si aterrizan en un día de la semana determinado (dow) y la función SUMPRODUCT para contar el total.

Cuando se le da una fecha, WEEKDAY simplemente devuelve un número entre 1 y 7 que corresponde a un día particular de la semana. Con la configuración predeterminada, 1 = domingo y 7 = sábado. Entonces, 2 = lunes, 6 = viernes, y así sucesivamente.

El truco de esta fórmula es comprender que las fechas en Excel son solo números de serie que comienzan el 1 de enero de 1900. Por ejemplo, el 1 de enero de 2016 es el número de serie 42370 y el 8 de enero es 42377. Las fechas en Excel solo se ven como fechas cuando se aplica un formato de número de fecha.

Entonces, la pregunta es: ¿cómo puede construir una matriz de fechas que pueda ingresar en la función WEEKDAY para averiguar los días de la semana correspondientes?

La respuesta es usar FILA con funciones INDIRECTAS así:

ROW(INDIRECT(date1&":"&date2))

INDIRECTO permite que las fechas concatenadas "42370: 42377" se interpreten como números de fila. Entonces la función FILA devuelve una matriz como esta:

(42370;42371;42372;42373;42374;42375;42376;42377)

La función WEEKDAY evalúa estos números como fechas y devuelve esta matriz:

(6;7;1;2;3;4;5;6)

que se compara con el día de la semana dado (6 en este caso, de D6). Una vez que los resultados de la prueba se convierten a unos y ceros con el guión doble, SUMPRODUCT procesa esta matriz:

(1;0;0;0;0;0;0;1)

Que devuelve 2.

Con SECUENCIA

Con la nueva función SEQUENCE, esta fórmula se puede simplificar algo así:

=SUMPRODUCT(--(WEEKDAY(SEQUENCE(end-start+1,1,start,1))=dow))

En esta versión, usamos SEQUENCE para generar la matriz de fechas directamente, sin necesidad de INDIRECT o ROW.

Articulos interesantes...