Es posible que veas fechas en los resultados de Power Query mostradas incorrectamente como 12/31/1899. Esto ocurre cuando Power Query convierte una celda en blanco o con valor cero en una fecha. El sistema interpreta el cero como el punto de partida de su sistema de números de serie de fechas. Este artículo explica por qué ocurre este error de conversión y proporciona pasos claros para corregirlo.
Puntos clave: Cómo corregir el error de fecha 12/31/1899
- Cambiar el tipo de dato de la columna a Texto: Evita que Power Query interprete incorrectamente valores en blanco o cero como el número de serie de fecha cero.
- Reemplazar valores nulos o cero: Usa la función Reemplazar valores para sustituir los valores problemáticos por un verdadero espacio en blanco antes de convertir a fecha.
- Usar la función Table.TransformColumnTypes: Aplica código M avanzado para manejar errores de conversión y reemplazarlos con nulo.
Por qué Power Query muestra cero como 12/31/1899
Excel y Power Query utilizan un sistema de números de serie de fechas donde cada fecha se almacena como un número. La fecha base, o día cero, en este sistema es el 30 de diciembre de 1899. El número 1 representa el 31 de diciembre de 1899. Cuando Power Query importa datos, intenta detectar el tipo de dato correcto para cada columna. Si una columna contiene principalmente fechas pero también tiene celdas en blanco o celdas con un valor de cero, Power Query puede asignar el tipo de dato Fecha a toda la columna.
El problema surge porque un espacio en blanco real en los datos de origen se lee como un valor nulo, pero una celda que contiene un cero se lee como el número cero. Cuando Power Query intenta convertir el número cero a una fecha, devuelve el número de serie de fecha para el día cero, que es 12/31/1899. Esto no es un error, sino una consecuencia de cómo está diseñado el sistema de fechas. La solución implica limpiar los datos antes de que ocurra la conversión de tipo.
Pasos para corregir el error de fecha 12/31/1899
Sigue estos métodos para limpiar tus datos y evitar la conversión de fecha cero. Comienza con el método más simple primero.
Método 1: Cambiar el tipo de dato a Texto primero
- Cargar tus datos en el Editor de Power Query
Selecciona tu tabla de datos en Excel, luego ve a la pestaña Datos y haz clic en Desde tabla/rango. Esto abre la ventana del Editor de Power Query. - Cambiar la columna problemática a tipo Texto
Haz clic en el icono de tipo de dato junto al encabezado de la columna. Puede mostrar Fecha o Cualquier. En el menú desplegable, selecciona Texto. Esta acción evita cualquier interpretación numérica automática de los valores. - Limpiar los valores cero y en blanco
Haz clic en la flecha desplegable en el encabezado de la columna. Desmarca los valores (null) y 0 si están listados, o usa los Filtros de texto para eliminarlos. Alternativamente, puedes usar la herramienta Reemplazar valores. - Convertir la columna limpia a tipo Fecha
Después de eliminar ceros y nulos, haz clic en el icono de tipo de dato de la columna nuevamente. Esta vez, selecciona Fecha. Solo las entradas de texto válidas se convertirán, evitando el error de 1899. - Cerrar y cargar la consulta
Haz clic en Inicio > Cerrar y cargar. Tus datos corregidos se cargarán en una nueva hoja de cálculo sin las fechas incorrectas.
Método 2: Usar Reemplazar valores antes de convertir
- Abrir el Editor de Power Query
Asegúrate de que tus datos con la columna de fecha estén cargados en el editor. - Seleccionar la columna y abrir Reemplazar valores
Haz clic derecho en el encabezado de la columna de fecha. Elige Reemplazar valores en el menú contextual. Aparecerá el cuadro de diálogo Reemplazar valores. - Reemplazar cero con un marcador de posición nulo
En el campo Valor para buscar, escribe 0. Deja el campo Reemplazar con vacío. Haz clic en Aceptar. Esto cambia todos los ceros a valores nulos, que Power Query maneja de manera diferente. - Convertir la columna al tipo Fecha
Ahora, cambia el tipo de dato de la columna a Fecha. Los valores nulos permanecerán como espacios en blanco, y los números válidos se convertirán a fechas correctas.
Si el error de fecha persiste después de la limpieza
Power Query aún muestra 1899 después de cambiar el tipo
Si el error persiste, los pasos aplicados pueden estar en el orden incorrecto. En el Editor de Power Query, mira el panel Pasos aplicados a la derecha. El paso Tipo cambiado debe venir después de cualquier paso de limpieza como Valor reemplazado. Puedes arrastrar los pasos en este panel para reordenarlos. Asegúrate de que Reemplazar valores o Filas filtradas ocurra antes de la conversión de tipo a Fecha.
Los datos de origen tienen valores cero ocultos o fórmulas
Tu tabla original de Excel puede contener celdas que parecen vacías pero tienen una fórmula que devuelve una cadena vacía o un cero. Power Query lee el resultado de la fórmula, no la celda mostrada. Antes de importar, convierte estas fórmulas a valores estáticos. Copia la columna en tu hoja de origen y usa Pegado especial > Valores para eliminar las fórmulas. Luego actualiza tu conexión de Power Query.
Usar el Editor avanzado para el manejo de errores
Para un control total, puedes usar código M en el Editor avanzado. Puedes modificar el paso de conversión de tipo para manejar errores. Busca una línea de código como Table.TransformColumnTypes(#"Previous Step",{{"YourColumn", type date}}). Puedes reemplazarla con una versión más robusta que reemplace errores con nulo: Table.TransformColumnTypes(#"Previous Step",{{ "YourColumn", type date}}, "en-US"). Aunque esta función específica no captura todos los errores, asegura un formato regional adecuado. Para un manejo de errores complejo, es posible que necesites agregar una columna personalizada con una expresión try…otherwise.
Métodos de conversión de tipo de dato: Comparación
| Elemento | Cambiar tipo mediante interfaz | Reemplazar valores primero | Código M avanzado |
|---|---|---|---|
| Mejor para | Conjuntos de datos simples con espacios en blanco obvios | Conjuntos de datos que contienen valores cero explícitos | Procesos de datos complejos y recurrentes |
| Complejidad | Baja | Media | Alta |
| Manejo de errores | Convierte cero a 12/31/1899 | Evita el error reemplazando cero con nulo | Puede escribirse para capturar y gestionar todos los errores de conversión |
| Dependencia del orden de pasos | Crítica: debe limpiar los datos primero | Crítica: el reemplazo debe ocurrir antes del cambio de tipo | Flexible: la lógica está integrada en el paso de código |
| Fiabilidad de actualización | Puede fallar si aparecen nuevos ceros en el origen | Fiable si la lógica de reemplazo cubre todos los casos | Más fiable si el código está escrito correctamente |
Ahora puedes corregir el error de fecha 12/31/1899 cambiando tu columna a Texto primero o usando la herramienta Reemplazar valores. Asegúrate siempre de que los pasos de limpieza de datos ocurran antes de la conversión final de tipo a Fecha en tu panel Pasos aplicados. Para informes automatizados, considera agregar un paso de Reemplazar valores que apunte a cero para hacer tu consulta robusta contra futuros errores de entrada de datos. Usa Ctrl + Clic para seleccionar varios encabezados de columna si necesitas aplicar la misma corrección a varias columnas de fecha a la vez.