martes, febrero 04, 2020

El misterioso caso de las fechas cambiantes

Todo empezó cuando un colega en el trabajo copió una tabla de fechas de un cuaderno Excel a otro. Era uno de esos raros días en que su atención esta centrada más en el trabajo que en cosas agradables.
Con sorpresa observó que las fechas cambiaban al ser copiadas de un cuaderno al otro. Esta es la situación (por supuesto que no se trataba de fechas de nacimiento)

Después de rascarse repetidamente el cuero cabelludo, acción que, está por demás decir, no incrementa la capacidad analítica del rascado, decidió consultarme.

Debo reconocer que tuve unos momentos de embarazosa vacilación hasta dar con la clave del misterio. Excel tiene dos bases distintas para los cálculos de fecha: 1900 y 1904.

Como (casi) todos sabemos Excel usa una serie de números enteros para representar las fechas. La base por defecto (para todas las versiones de Excel para Windows) es el 1 de enero del 1900, fecha representada por el número 1. El número 2 representa el 2 de enero de 1900 y así sucesivamente.
Pero sucede que Excel permite también usar como base el año 1904. De manera que el  mismo número de serie puede representar dos fechas distintas dependiendo de las definiciones del cuaderno Excel.
De esta manera, al copiar las fechas Excel "traduce" el número de serie a distintas fechas.
En la imagen de arriba podemos ver que la diferencia entre las fechas en los cuadernos es de 4 años; más precisamente 1462 días.

Cambiamos la base en Archivo-Opciones-Avanzadas-Al calcular este libro



En esta captura de pantalla podemos ver cambian las fechas al cambiar el año-base




Volviendo al caso de mi colega, ¿cómo remediar esta situación?

Una posibilidad es cambiar la definición en el cuaderno de mi colega. Esta solución no es recomendable ya que si hay otras fechas en el cuaderno, éstas cambiaran también.
Otra posibilidad es poner el número 1462 en alguna celda vacía y copiarla; luego seleccionar el rango de fechas a modificar y usar Pegado Especial-Valores-Restar para corregir la fechas.

¿Por qué conviven estas dos bases en Excel? Aparentemente por motivos de compatibilidad con las versiones de Excel para Mac. En "Mac" la base es 1904 (la primer versión de Excel fue para Mac).

Como no fuera esta dualidad es problemática y puede conducir a errores importantes.

6 comentarios:

  1. como siempre un aporte genial y oportuno, muchas gracias por compartir

    ResponderBorrar
  2. Guuuuuu!!, Qué problema este Jorge. Pero siempre hay una solución, como la que nos ofreces a todos tus lectores.
    Muchas gracias.


    Jorge aunque no es el ámbito y ofrezco disculpas por adelantado, quería preguntarte y cuando tengas un poco de tiempo puedas investigar la razón de por qué esta construcción no funciona como debería esperarse. (En la oficina donde trabajo mi Office 2019/265 está ne ingles, y los separadores de argumentos son puntos y comas y no es posible ponerlo en español).

    Tengo un campo de comentarios extraídos de una base de comentarios así, en este caso en la celda F4

    "[2020-02-04 12:15:45]: Se aguarda la llegada de materiales. Hoy llega el material a sitio. Mientras, estamos realizando auditoria en BH715.

    [2020-01-31 15:16:58]: COMENTARIO ASIGNACION: Se reasigna a otro supervisor por vacaciones."

    Entonces quisiera que esta solución funcionara quitando los caracteres usados en origen (html) como son:
    "" , ":", "
    "

    para lograr que el texto quede "limpio" así.

    "[2020-02-04 12:15:45] Se aguarda la llegada de materiales. Hoy llega el material a sitio. Mientras, estamos realizando auditoria en BH715.
    [2020-01-31 15:16:58] COMENTARIO ASIGNACION: Se reasigna a otro supervisor por vacaciones."

    Las dos funciones anidadas que usé son:

    =SUBSTITUTE(F4;CHOOSE({1\2\3};"";":";"
    ");"")

    Pero solo "reconoce" el primer objeto del rango {1\... el resto no los recorre o bien la función SUBSTITUTE no soporte a CHOOSE.
    Como fuere en la ayuda de Office no se indica nada de nada que CHOOSE pudiera no ser compatible con ciertas funciones anidadas, como deseo que funcione, o bien si está escrito en algún lugar dicha limitación no se donde estaría.

    La ayuda está aquí:
    https://support.office.com/en-us/article/use-array-constants-in-array-formulas-477443ea-5e71-4242-877d-fcae47454eb8 y es por demás interesante su uso.

    Desde ya muchísismas gracias por sumarte al desafío que te presento hoy.
    Saludos desde Sur América.

    ResponderBorrar
    Respuestas
    1. Alfredo, te sugiero que me envies la consulta por mail privado y si es posible, incluyendo un archivo que sirva de ejemplo. Desde ya te digo que en todo lo que se trate de transformar datos, la herramienta preferida es Power Query.

      Borrar
  3. Cada día se aprende algo nuevo. Ni idea de que se podria presentar un problema de ese tipo. Gracias Jorge por compartir...

    Saludos

    ResponderBorrar
  4. Excel de Mac también soporta el sistema 1900 (ahora es su standard desde 2011) por lo que lo recomendable a la larga quizás sea cambiar a 1900 que termina siendo la configuración más común en estos días. Si no me equivoco hay una opción para hacer automáticamente la conversión al copiar de documentos antiguos a nuevos.
    El sistema de 1904 se originó para evitar genera problemas con fechas de 1900. El sistema 1900 considera al año 1900 como bisiesto (existe el 29/02/1900) cuando en realidad esa fecha no existió. El problema fue resuelto, yo diría esquivado empezando la cuenta 4 años después.

    ResponderBorrar
  5. Gracias por compartir. Microsoft parece sugerir que el problema se generó en Lotus 1-2-3 (la planilla de cálculos líder en aquellas épocas) y que Excel "asumió" el error por consideraciones de compatibilidad.
    Yo también tenía la noción de que había alguna forma de corregir el problema automáticamente, pero no pude encontrar nada al respecto. Microsoft propone corregir el problema manualmente.

    ResponderBorrar

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