Excel visual basic cambiar fecha almacenada como texto

Tengo una hoja de excel que creo a raiz de un archivo de texto. El problema es que las fechas vienen almacenadas en formato General de este modo: 20200709

Cómo hago para conseguier este resultado? 09/07/2020?

Lo estoy haciendo desde una macro y no encuentro el modo, porque la fecha desde el inicio además de venir en formato americano no está almacenada como fecha. De todos modos incluso intentando convertirlo sin la macro en formato fecha no hay manera.

3 Respuestas

Respuesta
1

Aquí otra macro para ti para considerar

Sub CambiarFecha()
  With Range("A2", Range("A" & Rows.Count).End(3))
    .Value = Evaluate("=IF({1},(RIGHT(" & .Address & ",2)&""/""&MID(" & .Address & ",5,2)&""/""&LEFT(" & .Address & ",4))+0)")
  End With
End Sub

Después de ejecutar la macro, cambia la columna a formato de fecha-

Respuesta
2

Con macro:

Sub convertir_str_date()
Dim rng As Range, cll As Object, fch As String
Set rng = Range("A2", Range("a2").End(xlDown))
For Each cll In rng
    fch = Right(cll.Value, 2) & "/" & Mid(cll.Value, 5, 2) & "/" & Left(cll.Value, 4)
    cll.Value = CDate(fch)
Next cll
End Sub

En la tercer linea deberías definir tu rango de datos.

Sin macro:

Creas una columna auxiliar con la siguiente formula:

=CONCATENAR(EXTRAE(A1;7;2);"/";EXTRAE(A1;5;2);"/";EXTRAE(A1;1;4))

Primero copias el rango de la columna auxiliar y lo pegas como valores, sino no te lo toma como fecha aún:

Luego te vas a Datos-->Texto en columnas-->Delimitados-->Destildas todas las opciones de separadores-->En formato de los datos seleccionas fecha y finalizar.

Hola!

Se me para la macro en Next c11, referencia de control de variable next no valida. He probado a quitarlo y entonces se para antes en: fch = 

y dice variable de objeto o bloque with no establecido...

No sé dónde puede estar el problema...

Es cll con dos "L" no con dos "1". 

Puede ser que tengas problema con el rango de datos, ¿dónde están tus datos ubicados y de que manera? ¿Podrías enviar una captura?

Respuesta
2

No tengo ni idea de Excel, y no sé si las funciones son las mismas, pero por si te puede dar una idea para el código de la macro

Ya lo tienes convertido en fecha

Para el código de la macro puedes usar

Texto14 = CDate(Right([Texto12], 2) & "/" & Mid([Texto12], 5, 2) & "/" & Left([Texto12], 4))

Que, supongo, no lo sé, donde pongo texto14 y texto12 tendrás que poner el nombre de las celdas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas