Como puedo controlar que un año es bisiesto?
Debo llenar una matriz con los dias de cada mes. Para ello debo conocer si
el año es bisiesto para poder añadir un dia al mes de febrero.
Muchas gracias por anticipado.
Saludos
Imagina que en la columna A hay una lista de años, hacia abajo. La lista
empieza en A1. En B1 escribimos:
'=SI(VALOR("31/12/"&$A1)-VALOR("01/01/"&$A1)=365;"bisiesto";"normal")'
y arrastramos hacia abajo.
Un saludo.
"Jordi Bayé" wrote:
En A1 el año.
--
Saludos,
Xavier
j.b...@MACcgac.es
Quitar MAC para contestar. Gracias.
"Raúl Bajo Sanz" <raulba...@discussions.microsoft.com> escribió en el mensaje news:68F68881-8830-4D64...@microsoft.com...
> Hola, otra posibilidad es:
y otra mas [aunque creo recordar que se podia simplificar
bastante...]=>
=SI(O(RESIDUO(A2;400)=0;Y(RESIDUO(A2;4)=0;RESIDUO(A2;100)<>0));VERDADERO;FALSO)
(en una sola linea) :-))
un saludo
Ivan
PD: con la excusa, encantado de leerte Xavier
una primera simplificacion podria ser esta=>
=O(RESIDUO(A2;400)=0;Y(RESIDUO(A2;4)=0;RESIDUO(A2;100)<>0))
un saludo
Ivan
> Ivan escribio en el mensaje ...
>>>[aunque creo recordar que se podia simplificar
>
> una primera simplificacion podria ser esta=>
> =O(RESIDUO(A2;400)=0;Y(RESIDUO(A2;4)=0;RESIDUO(A2;100)<>0))
tambien se puede evitar la suposicion de que en todo pc el formato de fecha sea dd/mm/aa -???-
(y de paso, se le da otra "adelgazadita") :))
=si(esnumero(--"2008/02/29"),"Bisiesto","Normal")
o...
=si(esnumero(--(a2&"/02/29")),"Bisiesto","Normal")
saludos,
hector.
> tambien se puede evitar la suposicion de que en todo pc el formato de fecha sea dd/mm/aa -???-
> (y de paso, se le da otra "adelgazadita") :))
>
> =si(esnumero(--"2008/02/29"),"Bisiesto","Normal")
> o...
> =si(esnumero(--(a2&"/02/29")),"Bisiesto","Normal")
o si solo quiere saber si es o no bisiesto, sin necesitar el
'enunciado', y aplicando a la formula de Hector la misma dieta que a
la anterior =>
=esnumero(--(a2&"/02/29"))
aunque, como me esta dando por pensar que lo que quiere Jordi pueda
ser via codigo, aqui va una adaptacion de la misma formula de Hector
(sorry) :-)
Function EsBisiesto(ByVal año As Integer) As Boolean
On Error Resume Next
EsBisiesto = Not IsError(CDate(año & "/02/29"))
End Function
un saludo
Ivan
aunque supongo que no sera el caso de OP( o a lo mejor si esta
haciendo algun archivo historico :-D)
si no recuerdo mal (creo que de alguna de tus 'enseñanzas', Hector) y
segun parecen corroborar mis pruebas, en Excel (Xp), aunque no en VBA,
=>
del 1900 para abajo la unica que funcionaria correctamente seria la
del 'residuo' (dichoso concilio de ¿Nicea??)
¿es asi, o estoy haciendo algo mal?¿en el 2007 ha cambiado?
un saludo
Ivan
> si no recuerdo mal... y segun parecen corroborar mis pruebas, en Excel... aunque no en VBA
> del 1900 para abajo la unica que funcionaria correctamente seria la del 'residuo' ...
> es asi, o estoy haciendo algo mal? en el 2007 ha cambiado?
"hablando" solo como la parte de los años... sip :))
(hasta donde recuerdo) la fecha minima (como dato fecha) en las hojas de calculo es 01/01/1900
y sigue igual en la version 2007, pero... existe un complemento (de terceros)
para trabajar con fechas anteriores a 1900...
-> XDate: Extended Date Functions Add-In
http://www.j-walk.com/ss/excel/files/xdate.htm
saludos,
hector.
> Ivan escribio en el mensaje ...
> aunque supongo que no sera el caso de OP (o a lo mejor si esta haciendo algun archivo historico :-D) ...
a mi se me ocurre pensar que OP necesita una lista de los dias de cada mes
pero tiene que "controlar" cuando un mes deba contener 28, 29, 30 o 31 dias
y una alternariva para descatar la necesidad de saber si bisiesto o no es (p.e.)
- poner la fecha del primer dia del mes (p.e.) en la celda A2
- para los dias 2 a 28 (rango A3:A29) simplemente "correr" la formula [A3] =a2+1
- para los dias 29, 30 y 31 usar las siguientes formulas:
[A30] =si(mes(a29+1)=mes(a29),a29+1,"")
[A31] =si(mes(a29+2)=mes(a29),a29+2,"")
[A32] =si(mes(a29+3)=mes(a29),a29+3,"")
-> notar que los ultimos 3 dias (29, 30 y 31) en el rango A30:A32
hacen referencia todos al dia 28 (rango A29) para sumar 1, 2 o 3 dias
saludos,
hector.
Grácias por vuestra ayuda, tanto la opcion de Ivan como la de Héctor Miguel
me han solucionado el problema.
Saludos a todos y gracias de nuevo
Jordi
O tambien:
- poner la fecha del primer dia del mes (p.e.) en la celda A2
- en la celda A3 poner: =SI(A2="";"";SI(DIA(A2)>DIA(A2+1);"";A2+1)) y copiar
hacia abajo
Saludos,
KL
> (hasta donde recuerdo) la fecha minima (como dato fecha) en las hojas de calculo es 01/01/1900
> y sigue igual en la version 2007, pero... existe un complemento (de terceros)
>
> para trabajar con fechas anteriores a 1900...
> -> XDate: Extended Date Functions Add-In
> http://www.j-walk.com/ss/excel/files/xdate.htm
muchas gracias por las aclaraciones y/o recordatorios
bueno, parece que Jordi finalmente va a tener una amplia oferta con
que probar
un saludo
Ivan