Excel cambia las fechas donde el día es más bajo que el mes (por ejemplo, 2º de abril) a la inversa (por ejemplo, 4 de febrero)

StackOverflow https://stackoverflow.com//questions/25077178

  •  02-01-2020
  •  | 
  •  

Pregunta

Estoy teniendo algo toruble con Excel y fechas. La situación es la siguiente: Tenemos un informe mensual con una serie de pestañas que la macro se importan en una hoja de cálculo central, tiene aproximadamente 120 columnas. Después de la importación, necesito agregar algunas fórmulas en las últimas columnas que sean relevantes para los datos, pero no incluidos en los datos, y uno de estos es el número del período (trabajamos para un cliente con el año a partir del 1 y 13 de abril Períodos de 4 semanas en el año). Para aprovechar esto, tengo una hoja separada con todas las fechas en la columna A, luego los períodos y otros datos en las siguientes columnas. Un simple Vlookup mira la fecha y devuelve el período.

Sin embargo, algunas de las fechas que vienen almacenadas como texto (y por lo que el Vlookup tiene # N / A), una solución simple, pegue especial: agregue una celda en blanco y Voila funciona. Y esto funciona si lo hago manualmente. Pero esto está destinado a hacer todo el trabajo para el usuario, así que intenté hacerlo programáticamente según el código a continuación:

'Sheets("dates and Periods").Activate
'Range("P1").Copy
'Sheets("Data").Activate
'Range(Cells(2, 5), Cells(lastrow, 5)).PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd
'Range(Cells(2, 5), Cells(lastrow, 5)).NumberFormat = "dd/mm/yyyy"

Tengo la celda en blanco de "Fechas y períodos" porque sé que definitivamente estará en blanco.

Ahora, cuando ejecuto este código, funciona para la mayoría de los valores. Sin embargo, para todas las fechas en la columna E donde el día es más pequeño que el mes, por ejemplo, el 1 de abril, 4 de mayo, etc., cambia el día y el mes alrededor, y esto no es formateo, cambiando a la fecha de largo. Puedo ver que ha cambiado el datos alrededor.

¿Hay alguna manera de evitar esto? He buscado una solución, pero todos los problemas que pude encontrar al buscar se realizaron con el sistema de fecha de 1904 o con el formato.

Cualquier ayuda sería apreciada.

Solución: [Rompiéndola en partes y poniéndola de nuevo]

For Each cell In Range(Cells(2, 5), Cells(lastrow, 5))

cell.Value = Mid(cell, 4, 2) & "/" & Left(cell, 2) & "/" & Right(cell, 4)

Next cell

¿Fue útil?

Solución

He tenido este problema muchas veces.La respuesta es generalmente específica de la solución, pero puede intentar convertir la fecha en formato DD-MMM-YYAY, luego nuevamente.

Otros consejos

Cuando ingresa algo que parece una fecha en una celda de Excel, lo analizará de acuerdo con la configuración regional de Windows. Las cuerdas que no encajan se ingresan como texto, las cuerdas que se convierten en fechas de Excel. Este último generalmente no será el mismo que la fecha prevista.

Sugeriría corregir esto durante el proceso de importación. Exactamente cómo hacer esto depende de los detalles que no haya incluido, pero el proceso es usar el proceso de datos / importación y pasar por el asistente de importación de texto. Ese asistente le permitirá especificar el formato para cada columna; Incluyendo el formato de fecha para E. que se asegurará de que todas sus fechas sean entendidas adecuadamente por Excel como fechas. Entonces, si el formato de fecha entrante es MDY, especificaría MDY; y Excel lo almacenaría correctamente, y luego mostrarlo en su configuración predeterminada, o en la forma en que formatee esa columna.

Otra opción, si es factible, sería alterar el generador de informes para que genere fechas que se encuentren en el mismo formato que el formato de fecha corta de su configuración regional de Windows

I importan una gran cantidad de archivos enviados por correo electrónico a las bases de datos y esto es consistentemente un problema.El problema no es causado por datos incorrectos, mal formato o tal cosa, sino simplemente un error en Excel (creo que Microsoft lo llame una función), donde intenta comprender las fechas en el formato estadounidense y automáticamente "corrige" cualquier cosa enencuentra.Se ha hecho peor porque si una fecha no funciona en el formato estadounidense, lo convierte en un archivo de texto que te está dejando con algunas fechas formateadas de una manera, algunas de otras.

La única solución que he encontrado es modificar los datos en la hoja de origen para que Excel no pueda entenderlo como una fecha de alguna manera, luego importarlo, luego convertirlo, un gran phaff.Microsoft, por favor, resáte esto, ¡está perdiendo tanto tiempo para programar soluciones de trabajo!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top