Fórmula genérica
=SUMAPRODUCTO(--(DIASEM(FILA(INDIRECTO(start&":"&end)))=dow))
Explicación
Para contar los días de la semana (lunes, viernes, domingos, etc.) entre dos fechas, puede usar una fórmula de matriz que use varias funciones: SUMAPRODUCTO, DIASEM, FILA e INDIRECTO. En el ejemplo que se muestra, la fórmula en la celda E6 es
Cuando se le da una fecha, DIASEM 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 parecen fechas cuando Se aplica un formato de número de fecha.
Entonces, la pregunta es: ¿cómo puede construir una serie de fechas que pueda alimentar a la función DIASEM para averiguar los días correspondientes de la semana?
La respuesta es usar FILA con funciones INDIRECTO así:
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.=SUMAPRODUCTO(--(DIASEM(FILA(INDIRECTO(B6&":"&C6)))=D6))
Cómo funciona esta fórmula
En esencia, esta fórmula usa la función DIASEM para probar varias fechas para ver si aterrizan en un día de la semana (dow) y la función SUMAPRODUCTO para contar el total.Cuando se le da una fecha, DIASEM 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 parecen fechas cuando Se aplica un formato de número de fecha.
Entonces, la pregunta es: ¿cómo puede construir una serie de fechas que pueda alimentar a la función DIASEM para averiguar los días correspondientes de la semana?
La respuesta es usar FILA con funciones INDIRECTO así:
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:
La función DIASEM evalúa estos números como fechas y devuelve esta matriz:{42370;42371;42372;42373;42374;42375;42376;42377}
que se prueba contra el día de la semana dado (6 en este caso, de D6). Una vez que los resultados de la prueba se convierten en 1s y 0s con el guión doble, SUMAPRODUCTO procesa esta matriz:{6;7;1;2;3;4;5;6}
Que devuelve 2.{1;0;0;0;0;0;0;1}
Con SECUENCIA
Con la nueva función SECUENCIA, esta fórmula se puede simplificar de la siguiente manera:En esta versión, usamos SECUENCIA para generar la matriz de fechas directamente, sin necesidad de INDIRECTO o FILA.=SUMAPRODUCTO(--(DIASEM(SECUENCIA(end-start+1,1,start,1))=dow))
0 comentarios:
Publicar un comentario