jueves, 13 de febrero de 2020

Calcula el lunes de la semana en Excel

Hace ya bastante tiempo escribí un artículo que nos permitía saber cuál era el lunes de cualquier semana a partir de una fecha (ver aquí).

Esta fórmula no era complicada pero quizá sí poco intuitiva... hoy nos aprovecharemos de todas las funciones desbordadas (dynamic arrays formulas) nuevas vista en los posts anteriores de este blog para resolverlo de una manera alternativa.

Calcula el lunes de la semana en Excel


Desmontamos la fórmula desbordada de C3:
=BUSCARX(B3;FILTRAR(SECUENCIA(366;1;"1/1/2020";1);DIASEM(SECUENCIA(366;1;"1/1/2020";1);2)=1);FILTRAR(SECUENCIA(366;1;"1/1/2020";1);DIASEM(SECUENCIA(366;1;"1/1/2020";1);2)=1);"-";-1;1)


En primer lugar tenemos el bloque:
FILTRAR(SECUENCIA(366;1;"1/1/2020";1);DIASEM(SECUENCIA(366;1;"1/1/2020";1);2)=1)
el cual genera una secuencia de 366 días desde el 1/1/2020 con
SECUENCIA(366;1;"1/1/2020";1)
a partir de estos 366 días con FILTRAR nos quedamos solo con aquellos cuyo DIASEM sea igual a 1 (a lunes), al aplicar el criterio de filtro
DIASEM(SECUENCIA(366;1;"1/1/2020";1);2)=1

Esto generaría un listado de fechas con todos los lunes del 2020...


Finalmente sobre este listado de 'lunes' aplicamos la función BUSCARX con los argumentos:
valor_buscado: celda B3 (una fecha cualquiera del 2020)
matriz_buscada: listado de lunes
matriz_devuelta: mismo listado de lunes
[si_no_encuentra]: un caracter concreto, por ejemplo, guión medio
[modo_de_coincidencia]: -1 (coincidencia exacta o el siguiente elemento menor)
[modo_de_búsqueda]: 1 (búsqueda del primero al último.


Sin duda una opción intuitiva a un problema complejo.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.