Fechas en formato texto

Hola! En mi trabajo el programa de contabilidad te permite descargar los datos a Excel, y quiero hacer con ellos una tabla dinámica. El problema es que las fechas me las pasa en formato texto, así que pongo en una celda 1, copio, selecciono las celdas donde están las fechas, pegado especial, multiplicar. Perfecto, me convierte el texto en un nº y luego:formato, celdas, numero, fecha.
El problema es que quiero hacer una macro que haga todo esto por mi, pero el ordenador entiende que las fechas están puestas como:mes/dia/año. Cuando en realidad están como dia/mes/año.Por tanto, al poner 1/05/03, me lo cambia a 05/01/03.Y no se cómo solucionar ésto, espero que alguien pueda ayudarme, de antemano muchísimas gracias a quien lo haga.

1 Respuesta

Respuesta
1
Tienes razón, a mi tampoco me sale. Hay una manera de solventar esto pero no sé si se adaptará a tu caso. Suponiendo que tengas una columna llena de fechas en formato texto, se trata de crear otra columna auxiliar desde excel, o también lo puedes hacer con una macro, en la que simplemente introduces una fórmula con la cual multiplicas por uno, o sumas cero lo que tengas en las celdas de formato texto. (La fecha en texto)
Después la columna auxiliar la copias y pegas (pegado especial valores) en la columna defectuosa (fechas en formato texto). Ahora a esa columna sí le podrás dar el formato normal de fecha y te lo trata como número no como texto. Todo esto se puede hacer con una macro y el formato también lo puedes aplicar con la instrucción que te dejé. Después de éstas operaciones la columna auxiliar se puede borrar si lo deseas.
Pero ya digo, si estos datos los tienes organizados en una columna será fácil hacerlo, sino quizá sea bastante complicado.
Te dejo estos dos ejemplos. En la columna "c" están los datos de fechas en formato texto y "d" es la columna auxiliar:
Sub Macro1()
Range("D3:D26").Select
Selection.Formula = "=c3*1"
Selection.Copy
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "dd-mm-yy;@"
Range("D3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
End Sub
Sub Macro2()
Range("D3:D26").Select
Selection.Formula = "=C3*1"
Range("C3:C26").Value = Selection.Value
Range("C3:C26").NumberFormat = "dd-mm-yy;@"
Selection.ClearContents
End Sub
Dime si te sirve.
hola.Lo siento, pero no me funciona.
Si una columna de excel tiene formato texto, e introduces fechas, éstas las entiende como texto, quedando alineadas a la izquierda.Si luego seleccionas esas celdas, y le das a formato, celda, numero, fecha:no sirve de nada, porque las sigue considerando como texto, y no permite hacer cálculos con ellas.La instrucción que me das en tu respuesta hace lo mismo, por tanto no funciona. Espero haberme explicado bien y que me puedas ayudar.
A ver si te sirve con ésta instrucción. Simplemente seleccionas el rango con formato texto directamente y le cambias el formato a fecha.
Selection.NumberFormat = "dd/mm/yy;@"
o escríbelo así si te viene mejor, adaptándolo a tu caso:
Range("A31:A37").NumberFormat = "dd/mm/yy;@"
Ya me contarás.
Si lo deseas puedes repreguntarme, pero por favor no te olvides de finalizar la consulta cuando hayas concluido.
Gracias por la rapidez de tu respuesta, aunque a mí me ha llegado hoy, y por eso no he podido finalizar antes. Agradezco el interés mostrado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas