miércoles, diciembre 24, 2008

Fechas anteriores al año 1900 en Excel

Hagamos la siguiente prueba: en la celda A7 ponemos la fecha 01/01/1900 (el primero de enero del 1900); luego arrastramos el valor con el mouse hasta la celda A1. Supuestamente tendríamos que ver la siguiente sucesión:

A6 = 31/12/1899
A5 = 30/12/1899
A4 = 29/12/1899
A3 = 28/12/1899
A2 = 27/12/1899
A1 = 26/12/1899

Veamos que pasa en la práctica



Extraño, no? Hagamos otro experimento. En una celda ponemos esta fórmula

=FECHA(1899,12,31)

¿Cuál será el resultado? Sería de esperar 31/12/1899, sin embargo el resultado será 31/12/3799



Es decir Excel ha calculado el año en la función agregando 1900 al número 1899. Esto se debe a que Excel no sabe, o mejor dicho, no ha sido programado para calcular fechas anteriores al primero de enero del 1900. Como ya hemos explicado en más de una nota Excel usa una serie de números para las fechas donde el número 1 representa el 01/01/1900, el 2 la fecha 02/01/1900 y así sucesivamente. Es decir que si queremos calcular la edad de alguien nacido antes del 1900 o si queremos manejar una base de datos genealógicos con Excel tendremos que encontrar algún rodeo.

En esta nota veremos algunos rodeos conocidos para superar este problema.

La solución oficial de Microsoft es una UDF (user defined function – función definido por el usuario). Para usar la función (en realidad son dos funciones) deben copiar el código en la hoja del enlace y pegarlo a un módulo normal de Vba (preferentemente en el cuaderno Personal.xls).

La función tiene dos variables: fecha de comienzo (startdarte) y fecha final (enddate). Fechas anteriores a 01/01/1900 deben ser texto. Por ejemplo, si nuestro abuelo nació el 18/02/1877 y falleció el 25/04/1963, la función da como resultado 86.
El problema con esta macro es que funciona con la notación americana, mes/día/año. Si tratamos de usarlo con la notación corriente en la mayoría de los países, d+ia/mes/año, el resultado será “invalid date”.


Otra solución es descargar e instalar el complemento XDATE (eXtended Date) desarrollado por John Walkenbach. Una vez descargado e instalado, una serie de funciones son incorporadas al grupo de funciones de fechas del asistente de funciones



Ahora podemos volver al ejemplo de mi abuelito y utilizar XDATEDIF para calcular cuántos días vivió: 31476



Para calcular cuantos años usamos XDATEYEARDIF.



Este complemento agrega otras funciones como por ejemplo XDATEDOW que calcula el día de la fecha (1 = domingo).

Un problema similar existe con fechas posteriores al 31/12/9999. En otras palabras, para Excel el mundo fue creado el 1 de enero del 1900 (en la versión para McIntosh, en 1904) y tendrá su fin el 31 de diciembre del 10000.






Technorati Tags:

4 comentarios:

  1. Hola este tema de las fechas es realmente complicado de entender.
    Tengo un problema y no se como enfrentarlo.
    Necesito saber cuantos dias, horas y minutos hay entre dos fechas. He intentado varias formulas, sin embargo, no he podido.

    Agradezco tu acostumbrada ayuda

    Cordial saludo

    ResponderBorrar
  2. Efectivamente, el tema es complicado. Te sugiero leer esta nota.

    ResponderBorrar
  3. Migre una hoja de calculo de libre office a excel y para mi sorpresa, los años posteriores a 1900 los pone en números negativos, así, el primero de enero de 1874 se escribe: -9494 y funciona, aunque no dibuja la fecha tal cual .

    ResponderBorrar
    Respuestas
    1. Supongo que te referís a los años anteriores al 1900. Como pongo en la nota, Excel calcula fechas a partir del 1 de enero de 1900. No conozco el manejo de fechas de Libre Office por lo que no se explicar el resultado que recibís.

      Borrar

Nota: sólo los miembros de este blog pueden publicar comentarios.