sábado, 27 de marzo de 2010

Calendario perpetuo. ¿Es mejorable este trabajo?



Por supuesto. En la entrada anterior así se insinúa. Podemos optimizarlo.


Podemos prescindir de la plantilla lineal y trabajar solo con la plantilla semanal. Podemos utilizar la función INDICE en vez de la función INDIRECTO.

Aunque este calendario no es una hoja muy cargada de fórmulas podemos aligerar el contenido en fórmulas de la plantilla semanal.

Cada celda de la plantilla semanal se corresponde con un día, que puede ser del mes deseado, del mes anterior, o del mes posterior. Para no presentar días de otros meses utilizo la función SI (fórmula =SI(MES($G$3+1)=$B$2;DIA($G$3+1);""). La celda G3 es el la fecha que se corresponde con el primer día de la primera semana de la plantilla.

En la primera semana de esta plantilla solo los seis primeros días pueden ser de otro mes, el séptimo es necesariamente del mes deseado. Por tanto solo necesitamos la función condicional SI en los seis primeros días. Las semanas segunda, tercera y cuarta no se van a corresponder, en ningún caso, con días de otros meses, por lo que solo hay que incrementar, para cada celda, el valor de la celda anterior. La quinta semana si puede corresponderse con días de otro mes, por lo que hay que utilizar la función SI y de la sexta semana solo hay que considerar los dos primeros días, eso si con la función SI.

Por último podemos preguntarnos como conocer fechas anteriores a 1900. El calendario vigente actualmente en casi todo el mundo es el gregoriano. Este calendario fue adoptado paulatinamente a lo largo de cuatro siglos por los distintos países, por lo que no podemos fácilmente hacer un calendario perpetuo y universal. En España está vigente desde octubre de 1582.

Mi trabajo se basa en el sistema de fechas de excel, que es gregoriano, por lo que como máximo puedo utilizarlo hasta 1582 (parte de octubre, noviembre y diciembre de 1582).

Cada cuatrocientos años se completa un ciclo de años bisiestos. Supongo que el año deseado + 400 se comporta igual que el año deseado. Por tanto si un año es menor que 1900 sumo, en la celda C3 400, mediante la fórmula =SI($B$1<1900;$B$1+400;$B$1).
Para terminar hay que ocultar la línea 3 y las líneas 15 a 26 que son las que contienen el nombre de los meses y proteger la hoja. Una vez protegida la hoja solo se podra escribir en las celdas B1 y B2.

No hay comentarios:

Publicar un comentario