Saltar al contenido

Fórmula para calcular los años bisiestos


pegones1

Recommended Posts

publicado

Para calcular los años bisiestos uso esta fórmula que me dice que los años de 366 días puedo ganar más dinero que los que tienen un día menos:

=REDONDEAR(MONEDA("4/"&A1)-MONEDA("4/"&A1-1);0)=366[/CODE]

En A1 el número con el año a comprobar si es bisiesto en que la fórmula anterior dará un valor VERDADERO.

publicado

Así es, Elías. Falla en los anteriores a 1901

La que parece más segura, aunque un poco larga, es:

=SI(O(RESIDUO(B4;400)=0;Y(RESIDUO(B4;4)=0;RESIDUO(B4;100)<>0));"Bisiesto";"No bisiesto")

Un saludos

publicado

Creo que se puede recortar un poco.

 
=SI((RESIDUO(B4;400)=0)+(RESIDUO(B4;4)=0)*(RESIDUO(B4;100)<>0);"";"No ")&"Bisiesto"
[/CODE]

Saludos

publicado

Hola friends:

Yo a lo mío,......jejeje

Public Function ESBISIESTO(Año As Range) As Boolean   

ESBISIESTO = False

If Año.Cells.Count > 1 Then
Beep
Exit Function
End If

If IsNumeric(Año.Value) = False Then
Beep
Exit Function
End If

r100 = Año.Value Mod 100
r1000 = Año.Value Mod 1000
r4 = Año.Value Mod 4

If r4 = 0 And (r100 > 0 Or r1000 = 0) Then
ESBISIESTO = True
End If

End Function


[/CODE]

Fórmula: (Devuelve Verdadero/Falso)

[CODE][B]=[COLOR=#b22222]ESBISIESTO[/COLOR]([COLOR=#0000ff][I]A1[/I][/COLOR])[/B][/CODE]

Saludos

publicado

Macro, ¡tenías que hacer de las tuyas!. Mira que el título dice "Fórmula ..." :cheerful:

sailepaty, falla en en años anteriores a 1900 y posteriores a 9999, pero avisa al generar #¡VALOR!

Por cierto, ¡"igualico" que Micro$oft Excel con las fechas! :greedy_dollars:

Sus límites son:

[TABLE=class: collapse]

[TR=class: trbgeven, bgcolor: #F3F3F3]

[TD]Primera fecha permitida en un cálculo[/TD]

[TD]1 de enero de 1900 (1 de enero de 1904, si se utiliza la fecha del sistema)[/TD]

[/TR]

[TR=class: trbgodd]

[TD]Última fecha permitida en un cálculo[/TD]

[TD]31 de diciembre de 9999[/TD]

[/TR]

[/TABLE]

[DBOX]Especificaciones y límites de Excel - Excel - Office.com[/DBOX]

Fleming, tu fórmula la he visto antes!!! (similar a la versión MacroAntoniana) :moon:

[DBOX]Method to determine whether a year is a leap year[/DBOX]

Tengo que recordar aquí (porque me viene muy a mano) el bug del año 1900, considerado erróneamente bisiesto por Excel:

[DBOX]Excel 2000 incorrectly assumes that the year 1900 is a leap year[/DBOX]

Gracias por vuestros comentarios y si sois buenos, al menos un día de este año bisiesto (que no es mucho pedir), os dejaré mi colección de fórmulas para calcular años bisiestos. :suspicion:

publicado
sailepaty, falla en en años anteriores a 1900 y posteriores a 9999, pero avisa al generar #¡VALOR!

Por cierto, ¡"igualico" que Micro$oft Excel con las fechas!

Sus límites son:

[TABLE=class: collapse]

[TR=class: trbgeven, bgcolor: #f3f3f3]

[TD]Primera fecha permitida en un cálculo

[/TD]

[TD]1 de enero de 1900 (1 de enero de 1904, si se utiliza la fecha del sistema)

[/TD]

[/TR]

[TR=class: trbgodd]

[TD]Última fecha permitida en un cálculo

[/TD]

[TD]31 de diciembre de 9999

[/TD]

[/TR]

[/TABLE]

1.-Me parece que el mes de febrero de 1900 esta dendro de esos limites, no?

2.-Quiere significar que por que Excel no calcula bien es correcto que tu formula no la haga?

Os dejaré mi colección de fórmulas para calcular años bisiestos.

Se te agradecerá enormemente, siempre listo para aprender algo nuevo. Ojala y sean mas originales que las que posteo Chandoo!!!

Saludos

publicado

Otra opción que me encontré en el baúl, pero desafortunadamente no recuerdo de donde la obtuve.

=SI(RESIDUO(A1;100);RESIDUO(A1;4);RESIDUO(A1;400))=0

Saludos

publicado

Hola de nuevo:

Esta función es tan pequeña, que parece una fórmula:

Public Function ESBISIESTO(Año As Range) As Boolean
[B]ESBISIESTO = Day((DateSerial(Año, 3, 1) - 1)) = 29[/B]
End Function
[/CODE]

Y aporta otro método distinto al que hemos empleado hasta ahora:

Preguntar si el día anterior al 1 de Marzo es 29. (*)

Besitos para todos.

[size=1]* (Sobre una idea de Adrian en TodoExcel)[/size]

publicado

Macro, ¿por qué no preguntas directamente si el 29 de febrero es un día del calendario?

Esta fórmula es la más corta que conozco:

Public Function EsAñoBisiesto(Año As Range) As Boolean
EsAñoBisiesto = IsDate("29/2/" & Año)
End Function[/CODE]

Esta función convertida en fórmula para calendarios en español y en inglés:

[CODE]=NO(ESERROR(FECHANUMERO("29/02/"&A1)))
=NOT(ISERROR(DATEVALUE("2/29/"&A1)))[/CODE]

Es un honor para mí compartir este foro con macronianos como tú. :o

publicado

sailepaty, está muy bien tener en cuenta en tu fórmula que el año 1900 no fue bisiesto.

[COLOR=#333333]=AÑO(("1/1/"&A1)+365+(A1=1900))=A1[/COLOR][/CODE]

Vamos a darle una vuelta de tuerca más a las fórmulas para calcular los años bisiestos. :sneakiness:

Para cualquier fórmula profesional se tiene que tener en cuenta el rango correcto de entradas para obtener la salida adecuada y esta vez ¡con la Iglesia hemos "topao"! :star:

[color=#000000][font=sans-serif]El 4 de octubre de 1582 fue el último día del calendario juliano y el 15 de octubre de 1582 fue el primer día del calendario gregoriano y ese año tuvo 10 días menos, siendo el primer año bisiesto de la historia, establecido por [/font][/color][color=#000000][font=sans-serif]el Papa Gregorio XIII en su bula [/font][/color][i]Inter gravisimas.

[DBOX]Año bisiesto - Wikipedia, la enciclopedia libre[/i][/DBOX]

Por lo tanto, cualquier año anterior a 1582 no puede ser bisiesto y habrá que tenerlo en cuenta en las fórmulas.

publicado

Definitivamente no dejemos que Don Gregorio nos arruine el calculo.

=(SI(RESIDUO(A1;100);RESIDUO(A1;4);RESIDUO(A1;400))+(A1<=1582))=0

[COLOR=#333333]=AÑO(("1/1/"&A1)+365+(A1=1900)+(A1<=1582))=A1[/COLOR]
[/CODE]

[color=#333333]Saludos[/color]

publicado

sailepaty, como comentaste que lees el foro de Chandoo, estoy posteando algunas de mis fórmulas en inglés.

[DBOX]Check if an year is leap year, using Excel Formulas | Chandoo.org - Learn Microsoft Excel Online[/DBOX]

En el foro de Chandoo llevamos publicadas 25 fórmulas para calcular los años bisiestos.

Es un honor que Rick Rothstein (MVP - Excel) haya replicado a alguna de mis sugerencias, siendo que escribe en uno de los blogs más famosos de Excel que os invito a leer si aún no lo conocéis:

[DBOX]Contextures Blog[/DBOX]

publicado

Pedro,

Felicidades por el honor que te causa la replica de Rick Rothstein. Sin embargo me parece que el blog al que haces referencia pertenece a Debra Dalgleish y Rick replica a los post que ella efectúa. Sin embargo y sin estar muy seguro creo haber leído algunos posts que el inicia con la autorización de Debra.

Y para no dejar de replicar y tal y como diría Rick. Similar a la formula de Pedro pero con una función menos.

[SIZE=2][FONT=arial] =ISNUMBER(1*(A1*(A1>1900)&"-02-29"))[/FONT][/SIZE]
[SIZE=2][FONT=arial]
=ESNUMERO(1*(A1*(A1>1900)&"-02-29"))
[/FONT][/SIZE][/CODE]

[size=2][font=arial]

Saludos[/font][/size]

publicado

sailepaty, gracias por la aclaración. Es lo que me pasa por leer demasiados blogs de Excel. Aunque sí, Rick escribe a menudo en el blog de Debra (autora de Contextures).

Ahora si que te ha quedado redonda. ¡Un diez maestro!

publicado

Las más cortas que he conseguido yo nunca han sido:

=DIA(1*("1/3/"&A1)-1)=29[/CODE]

que falla para 1900, y:

[CODE]=DIA(1*("1/3/"&A1)-1+(A1=1900))=29[/CODE]

que no falla para 1900.

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      189
    • Comentarios
      99
    • Revisiones
      29

  • Crear macros Excel

  • Mensajes

    • Hola, Parece un Kardex aunque al final me he perdido, entendí que necesita sumar las producciones siempre y cuando no pasen un punto del día. Tal vez algún Maestro o usuario avanzado pueda aportar algo con la información que ha compartido, pero en mi caso no comprendí por qué si  el prod1 tuvo una producción de 90 entonces cómo definió restarle ese 78, ¿es por qué tiene un NO en el "cumple"? Y luego termina en -12 porque le restó 24 que tampoco pude deducir cómo se determinaron. Le recomiendo hacer un ejemplo de un solo ITEM que deba ser afectado por las reglas que compartió y con los resultados que serían los correctos esperados.
    • Hola Buenas Noches, Me podrán ayudar a resolver un problema con una planilla que tengo, les comento brevemente. Tengo un archivo que cuenta con 2 hojas, la primera se llama "Movimientos" que básicamente muestra los productos con quiebres que se presentan y la hoja "Producción" que como su nombre lo dice son las producciones de cada producto según fecha de creación. Lo que necesito es lo siguiente: Cada vez que agregue una producción en la hoja "producción", debo ingresar el código creado su cantidad y lote respetivamente, además de la fecha en que se realiza la producción, en caso que sea mayor a las 12:00 se considera PM sino AM. Lo complejo es acá en la otra hoja llamada Movimientos: Esta hoja contiene una columna que se llama "Saldo", que básicamente es la diferencia de lo producido vs el quiebre en esa fecha. Una columna llamada "Cumple", que significa que ese pedido lleva si o no el producto con quiebre. Y una columna "Se preparo", que es si el pedido se preparo o no. Lo complicado viene acá es que si la fecha de la producción que ingrese en la hoja "Produccion", se hace después de la fecha de la hoja movimientos no me debe contar esa producción para efecto de la columna Saldos, si la fecha es igual o menor si se considera y ese saldo que queda disponible se puede ocupar para futuros ingresos de pedidos. Otra conducción es que las producciones siempre se deben asignar al pedido más antiguo de ese código salvo que la fecha de entrega ya haya pasado. La columna "Cumple" es básicamente para poder generar un KPI donde me indique cuales producciones se cumplieron con el plazo y cuales No. Espero me puedan ayudar ya que tengo la siguiente formula pero no sirve ya que me toma las unidades totales y no cumple con la restricción del horario. =SUMAR.SI(Produccion!A:A; $A2; Produccion!C:C) - SUMAR.SI.CONJUNTO($E$2:$E2; $A$2:$A2; A2)) Muchas gracias. Ejemplo..xlsx
    • Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
    • Si tienes office 365 puedes usar algo como FILTER ó TEXTJOIN y si no tienes, entonces se puede jugar con las formulas, pero no te recomiendo mucho si son muchos datos, de todas maneras te dejo una fórmula y en vba, ya tu decides cual ocupar, vale Saludos BUSCAR.xlsm
    • Buenos días mis estimados Familia ayudaexcel,  Favor quisiera solicitar su gentil soporte con lo siguiente: Necesito una formula que al buscar encuentre el valor inicial de busqueda y dea todo los resultados encontrado en una celda como ejemplo. si este producto tienes 4 cantidades esta al hacer una formula de busqueda me dea el resultado de las 4 en una celda, dejo el adjunto a espera de su gran soporte.   BUSCAR.xlsx
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.