jueves, 18 de marzo de 2010

Bisiestos

La característica principal de año bisiesto (ver wikipedia) es la de tener 366 días en vez de los habituales 365 días.



La regla para los años bisiestos según el calendario gregoriano es:

Un año es bisiesto si es divisible por 4, excepto el último de cada siglo (aquel divisible por 100), salvo que este último sea divisible por 400.

He preparado un libro excel en el que bajo el cáculo de si un año es bisiesto o no se estudian las siguientes funciones:

Función lógica Si(Condición;respuesta si verdadero;respuesta si falso)
Función de manejo fechas Dia(fecha) . Devuelve el día del mes de la fecha.
Función Residuo()
Función Entero()
Función lógica Y():Devuelve verdadero si todos los x son verdaderos. De lo contrario devuelve falso.
Función lógica O(x1,x2,x3...): Devuelve verdadero si al menos uno de los x es verdadero.
Función lógica NO(x):Devuelve el valor negado de x. Falso si x es verdadero y verdadero si x es falso.
Función de manejo fechas Fecha(Año;mes;día)

El cálculo se realiza de dos maneras diferentes, una de ellas ateniendonos a las condiciones indicadas anteriormente y otra utilizando las propiedades del sistema de fechas de excel.

En la columna C de la hoja Bisiestos he calculado, mediante la función Residuo, si el año en cuestión es divisible por 4, mediante la formula:
=RESIDUO($A2;4)=0
Esta formula devuelve un verdadero o un falso si el residuo es cero o si no lo es.

En la columna D calculo si el año es divisible por cien mediante la formula:
=ENTERO($A2/100)*100=$A2
El algoritmo de la formula es tomar la parte entera de dividir un número A por un número B y el resultado multiplicarlo por B. En el caso de que A sea divisible por B el resultado del algoritmo será A y si no es divisible será distinto de A. La fórmula devuelve un verdadero o un falso.

En la columna E calculo si el año es divisible por 400 mediante la función RESIDUO, ya comentada.

En la columna F calculo si un año es bisiesto o no mediante el algoritmo :
Es bisiesto si es divisible por 400. Si es divisible por cuatrocientos es año siempre es bisiesto. Si es divisible por cuatro no lo debe ser por cien. La divisibilidad por cuatro la tenemos con un verdadero o un falso en la columna C. La divisivilidad por cien la tenemos en la columna D, pero como nos interesa que NO sea divisible por 100, es decir que nos de VERDADERO cuando no sea divisible por cien utilizo la formula NO(D2).
La formula en la columna F es =SI(O(Y(C2;NO(D2));E2);-1;0). En este caso, quiero que la función SI devuelva -1 en el caso de que sea verdadero y un 0 en el caso de que sea falso. Podía haber elegido cualquier otro par de respuestas, tipo "Si-No". Son respuestas que libremente indica el usuario.

Si utilizamos las propiedades del sistema de fechas de excel, si al uno de enero de un año determinado le sumamos 365 días nos da el uno de enero de año siguiente si el año no es bisiesto, o el 31/12 si el año lo es. Si en vez de partir del 1/1 partimos del 1/2 y le sumamos 28 días nos debe dar 29/2 si el año es bisiesto o uno del tres si no lo es.

En la columna B utilizo la formula =SI(DIA(FECHA(A2;1;1)+365)=1;0;-1).
El sistema de fechas de excel solo es válido a partir de 1900, pero falla para el año 1900.

En la columna H utilizo la formula =FECHA(A2;2;29). (año;mes de febrero;dia=29). Esta formula da 29/2/año para los años bisiestos y 1/3/año para los que no lo son. En la columna I =SI(DIA(H2)=29;-1;0) pregunto si el día es 29 y si lo es devuelve -1 y si no un 0. Es una opción mas.

No hay comentarios:

Publicar un comentario