** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Pasar texto a fecha (otra vez)
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoPasar texto a fecha (otra vez)

 Responder Responder
Autor
Mensaje
acilu55 Ver desplegable
Asiduo
Asiduo


Unido: 27/Septiembre/2011
Estado: Sin conexión
Puntos: 214
Enlace directo a este mensaje Tema: Pasar texto a fecha (otra vez)
    Enviado: 01/Diciembre/2021 a las 10:28

Este es un tema ya tratado y que creía resuelto, pero que me ha estado dando resultados erróneos durante mucho tiempo y me he dado cuenta ahora:

se trata de una columna de fecha en que al crearla con determinado programa excel reconoce el formato dd/mm/aaaa como texto u no como fecha.

Yo utilizaba este codigo:
sub p1()

dim ult as integer
ult=Cells(Rows.count, 1).End(xlUp).Row

for n = 2 to ult
celdilla= "g"& n
v1= Range(celdilla).Value
Range(celdilla).Value=Left(v1, 10)
next
end sub

de resultado obtenía que un 30% de las celdas toman el formato de fecha y se alinean a la derecha pero el resto siguen siendo texto alineado a la izquierda.

En la anterior consulta en el foro Xavi  me paso  este código

Dim i As Integer
    Dim arrFecha As Variant
    i = 2
    Cells(i, 7).Select
    Do Until ActiveCell = ""
        arrFecha = Split(ActiveCell, "/")
        ActiveCell.Value = DateSerial(CInt(arrFecha(2)), CInt(arrFecha(1)), CInt(arrFecha(0)))
        i = i + 1
        Cells(i, 7).Select
    Loop
End Sub

En este cado todo se alinea a la derecha y tienen fprmato de fechas, pero...
las mismas fechas ue antes no convertía ahora las traduce en formato mm/dd/aaaa y son concretamente los dias de mes anteriores al 12, este incluido, de manera que me coloca el dia uno en enero, el dos en febrero etc y todos así hasta el 12 en diciembre y con el mismo día: el del mes correspondiente.

No logro averiguar ue me pasa 
¿ALGUien tiene alguna idea de donde estará el quiz?
gracias de antemano

Gracias a todos de antemano
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3849
Enlace directo a este mensaje Enviado: 01/Diciembre/2021 a las 12:45
Prueba algo así:

sub p2()
  dim ult as integer
  ult=Cells(Rows.count, 1).End(xlUp).Row
  Range("G2", "G" & ult).Select         'Selecciona solo el rango de datos en columna G
  Selection.NumberFormat = "dd/mm/yyyy" ' Cambia al formato que quieres
End sub
El Búho es un pajarraco
Arriba
acilu Ver desplegable
Habitual
Habitual


Unido: 11/Enero/2007
Localización: Zamora
Estado: Sin conexión
Puntos: 146
Enlace directo a este mensaje Enviado: 01/Diciembre/2021 a las 12:46
esto es curioso y noen cuentro el fallo:
si la funcion es el código de xavi funciona

sub p1()
Dim i As Integer
    Dim arrFecha As Variant
    i = 2
    Cells(i, 7).Select
    Do Until ActiveCell = ""
        arrFecha = Split(ActiveCell, "/")
        ActiveCell.Value = DateSerial(CInt(arrFecha(2)), CInt(arrFecha(1)), CInt(arrFecha(0)))
        i = i + 1
        Cells(i, 7).Select
    Loop
End Sub

si la junto co el resto que necesito para no hacer dos funciones deja de funcionar

Sub p1()
Dim ult As Integer

ult = Cells(Rows.Count, 1).End(xlUp).Row

For n = 2 To ult

celdilla = "g" & n
v1 = Range(celdilla).Value
Range(celdilla).Value = Left(v1, 10)

Select Case Left(Range("a" & n).Value, 2)
Case Is = "LE"
Range("a" & n).Value = "León"
Case Is = "PA"
Range("a" & n).Value = "Palencia"
Case Is = "PO"
Range("a" & n).Value = "Ponferrada"
Case Is = "SA"
Range("a" & n).Value = "Salamanca"
Case Is = "ZA"
Range("a" & n).Value = "Zamora"
End Select

Next

Dim i As Integer
    Dim arrFecha As Variant
    i = 2
    Cells(i, 7).Select
    Do Until ActiveCell = ""
        arrFecha = Split(ActiveCell, "/")
        ActiveCell.Value = DateSerial(CInt(arrFecha(2)), CInt(arrFecha(1)), CInt(arrFecha(0)))
        i = i + 1
        Cells(i, 7).Select
    Loop
End Sub

en principio son dos cosas diferentes y haga primero una coso o la otra, el error de que los doce primeros dias de mes cambia meses por dias se produce sin que logre averiguar porque.
Arriba
sdgm Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 21/Abril/2005
Localización: Guatemala
Estado: Sin conexión
Puntos: 928
Enlace directo a este mensaje Enviado: 01/Diciembre/2021 a las 16:55
Hola, Acilu.

Como comenta Lbauluz, pareciera que el problema se origina en los formatos de fecha de Excel.  ¿Podrías mostrar algunas de las fechas que se interpretan bien y otras que no, para que tengamos una idea más clara de tu problema?
Cordialmente, David
Arriba
acilu Ver desplegable
Habitual
Habitual


Unido: 11/Enero/2007
Localización: Zamora
Estado: Sin conexión
Puntos: 146
Enlace directo a este mensaje Enviado: 01/Diciembre/2021 a las 19:52
en la tabla original tiene este texto
12/11/2021
12/11/2021
12/11/2021
12/11/2021
12/11/2021
12/11/2021
12/11/2021
12/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
el resultado despues de pasar el codigo es
11/12/2021
11/12/2021
11/12/2021
11/12/2021
11/12/2021
11/12/2021
11/12/2021
11/12/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021

como veis en los que el dia es menor o igual a 12  ha tomado el día por el mes, a partir del déa 13 todo esta bien, en noviembre 13 y 14 fueron s,abado y domingo, por lo ue no hay registros en esas fechas.

Arriba
acilu Ver desplegable
Habitual
Habitual


Unido: 11/Enero/2007
Localización: Zamora
Estado: Sin conexión
Puntos: 146
Enlace directo a este mensaje Enviado: 01/Diciembre/2021 a las 20:04
con el códifo de Ibauluz
sub p2()
  dim ult as integer
  ult=Cells(Rows.count, 1).End(xlUp).Row
  Range("G2", "G" & ult).Select         'Selecciona solo el rango de datos en columna G
  Selection.NumberFormat = "dd/mm/yyyy" ' Cambia al formato que quieres
End sub

ocurre tambien algo raro: los dias menores del 13 los pone todos el dia once y la meses 1,2,3 etc en formato fecha, pero los días mayores de 12 no los convierte en fechas. resultado:

11/12/2021
11/12/2021
11/12/2021
11/12/2021
11/12/2021
11/12/2021
11/12/2021
11/12/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021
15/11/2021

las fechas las alinea a la derecha y los textos siguen estando a la izquierda.

Por si sirve uso Excel385.  el numero de filas totales  del mes de noviembre son 1200 y el cambio de fecha en la fila  768

Arriba
sdgm Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 21/Abril/2005
Localización: Guatemala
Estado: Sin conexión
Puntos: 928
Enlace directo a este mensaje Enviado: 01/Diciembre/2021 a las 21:19
Prueba con la siguiente modificación a tu código:

Sub ConvertirFechas()
    Dim ult As Integer
    ult = Cells(Rows.Count, 1).End(xlUp).Row
    
    For n = 2 To ult
        celdilla = "g" & n
        v1 = Range(celdilla).Value
        Range(celdilla).NumberFormat = "dd/mm/yyyy"
        Range(celdilla).Value = CDate(Left(v1, 10))
    Next
End Sub

Si esto te funciona, podría optimizarse tu código para que sea más rápido (aunque sea más largo de escribir) a lo siguiente:

Sub ConvertirFechas2()
    Dim ult As Integer, Celda As Range
    ult = Cells(Rows.Count, 1).End(xlUp).Row
    With Range(Cells(2, 7), Cells(ult, 7))
        .NumberFormat = "dd/mm/yyyy"
        .Interior.ColorIndex = -4142
        For Each Celda In .Cells
            Celda.Value = CDate(Left(Celda.Value, 10))
        Next Celda
    End With
End Sub

Por favor, comenta cómo te fue...


Cordialmente, David
Arriba
acilu55 Ver desplegable
Asiduo
Asiduo


Unido: 27/Septiembre/2011
Estado: Sin conexión
Puntos: 214
Enlace directo a este mensaje Enviado: 02/Diciembre/2021 a las 09:41
sdgm: funcionan correctamente las dos funciones, pero al colocarlas con el resto volvian a no funcionar. 
asi que el error venia de las lineas anteriores de código, concretamente al quitar

celdilla = "g" & n
v1 = Range(celdilla).Value
Range(celdilla).Value = Left(v1, 10)

todos los codigos que me habeis propuesto funcionan correctamente.
Muchas gracias por vuestra ayuda y perdonar mi impericia, tenia ue habarlo visto antes

Gracias a todos de antemano
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3849
Enlace directo a este mensaje Enviado: 02/Diciembre/2021 a las 09:54
Publicado originalmente por acilu55 acilu55 escribió:

Muchas gracias por vuestra ayuda y perdonar mi impericia, tenia ue habarlo visto antes


Al contrario, estamos aquí precisamente para eso, 20 ojos ven más que 2.

Cierro el hilo
El Búho es un pajarraco
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable