Jump to content
mdomfu

ANSWERED Reemplazar patrón

Recommended Posts

Buenas tardes.

Tengo una columna de fechas de nacimiento con el siguiente formato:

2000-04-19 00:00:00.0
2010-05-27 02:00:00.0
2013-07-27 02:00:00.0
1984-11-17 00:00:00.0
2013-04-06 00:00:00.0
2008-07-21 00:00:00.0
2012-05-16 02:00:00.0

Me gustaría saber cómo usar VBA para eliminar el patrón de después de la fecha " xx:xx:xx.x" (espacio incluido, si puede ser). He leído que es posible usando regex pero no tengo mucho conocimiento sobre ello.

Gracias.

Share this post


Link to post
Share on other sites
En 21/12/2019 at 16:41 , JSDJSD dijo:

Hola mdomfuprueba el adjunto haber si es lo que estas buscando.

Prueba1mdomfu.xlsm 21 kB · 1 descarga

Es exactamente lo que necesito, pero me da error de variable.

Lo he modificado así:

Option Explicit
Sub CorregirFechas()
Dim ufh1 As Long
'Determinamos la última fila de la columna A de la Hoja1 con datos
ufh1 = Data.Range("O" & Rows.Count).End(xlUp).Row
'Cambiamos el formato desde la A2 hasta la última fila con datos de la columna A
Data.Range("O2:O" & ufh1).NumberFormat = "yyyy/mm/dd"
End Sub

La hoja de datos se llama "Data". Necesito que se ejecute desde Desarrollador/Macros, no desde un botón.

Gracias.

Edited by mdomfu

Share this post


Link to post
Share on other sites
En 20/12/2019 at 23:55 , Luis paz dijo:

Podrías usar una formula, en lugar de una macro: 

=IZQUIERDA("CELDA DEL DATO",10)

=EXTRAE("CELDA DEL DATO",1,10)

Comenta si te sirve

¡Gracias!

Edited by mdomfu

Share this post


Link to post
Share on other sites
En 21/12/2019 at 16:41 , JSDJSD dijo:

Hola mdomfuprueba el adjunto haber si es lo que estas buscando.

Prueba1mdomfu.xlsm 21 kB · 2 descargas

La hoja de datos a modificar es la que te adjunto. No puedo poner la columna con formato personalizado, ya que copio y pego tal cual de otro archivo.

La hoja de datos se llama "Data". Necesito que se ejecute desde Desarrollador/Macros, no desde un botón.

Libro1.xlsx

Share this post


Link to post
Share on other sites
Hace 3 horas, mdomfu dijo:

Gracias por la solución.

Pero si fuera posible por VBA o una manera de que me cambie íntegramente los datos en la propia celda, que se borre el

 00:00:00.0

no que me aparezcan corregidos en una columna nueva.

No revisaste el archivo estimado, en el módulo 1 puse el código para hacerlo mediante vba

Sub FormatoFecha()
Dim i, Final As Variant
Final = Sheets("Data").Cells(Rows.Count, "a").End(xlUp).Row

For i = 2 To Final
    If Len(Cells(i, 7).Value) > 10 Then
        Cells(i, 9).Value = Format(Left(Cells(i, 7).Value, 10), "mm/dd/yyyy") 'REVISA EL FORMATO, A MÍ ME SIRVE ASÍ, PUEDE QUE A TI TE SIRVA "dd/mm/yyyy", ESO SE DEBE A QUE MI EXCEL ESTÁ EN INGLÉS Y TIENE INVERTIDO EL FORMATO... CUIDADO CON ESO PORQUE TE PODRÍA TOMAR EN LUGAR DE 3 DE MAYO, LO TOMARÍA COMO 5 DE MARZO... OJOOOO!
    End If
Next i

End Sub

Libro1.xls

Edited by Luis paz

Share this post


Link to post
Share on other sites

Aunque no entiendo bien el problema.

Prueba esto a ver

Private Sub CommandButton1_Click()
   Dim ufh1 As Long, c As Range, celda, mArray
   ufh1 = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
   Set c = Hoja1.Range("A2:A" & Hoja1.Range("A" & Rows.Count).End(xlUp).Row)
   For Each celda In c
      mArray = Split(celda, " ")
      celda.Offset(, 4) = mArray(0)
   Next
End Sub

 

Share this post


Link to post
Share on other sites

¡Hola, a todos!

Otra opción más económica, puede ser:

Sub SoloFecha()
  Range("M2", Range("M" & Rows.Count).End(xlUp)).TextToColumns _
    Range("M2"), 1, 1, 1, 0, 0, 0, 1, 0, , Array(Array(1, 5), Array(2, 9))
End Sub

¡Bendiciones!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png