Jump to content
andres palacios

ANSWERED Localizar una misma cadena de texto dentro de una misma celda y extraer hora justo despues de esa cadena

Recommended Posts

Buenas compañeros,

Me enfrento a un problema de programación con VBA que parece complicado, a ver si me pueden echar una mano ya que he investigado y no encuentro la manera de hacerlo.

En la siguiente imagen, en la columna B están las "Acciones". Dentro de las celdas de esta columna hay texto con información relativa al trabajo realizado.

Mi intención es buscar todas las veces que se repite la cadena "Sub-task stamped" dentro de una misma celda  y extraer la fecha y hora que está en el renglón justo de  abajo.

En el Ejemplo de la imagen el resultado sería: 

    -Sub-task Stamped: 10-Mar-2020 21:20

    - Sub-task Stamped: 10-Mar-2020 19:03

nota: Podría haber filas como es la B3 en la que no aparece esta cadena de texto, en ese caso no hay que hacer nada

Adjunto archivo, para visualizar la situación

Les agradecería enormemente que me puedieran ayudar a resolver el problema compañeros

Muchas gracias de antemano

Un abrazo

Captura.JPG

extraertexto.xlsm

Share this post


Link to post
Share on other sites

Prueba con esta macro:

Sub BuscarFechas()
Application.ScreenUpdating = False
For x = 2 To Range("B" & Rows.Count).End(xlUp).Row
   Range("B" & x).Select
   fechas = Split(Range("B" & x), "/* ")
   For f = 1 To UBound(fechas)
      ActiveCell.Offset(0, 1).Select
      ActiveCell = Left(fechas(f), 15)
   Next
Next
End Sub

 

Share this post


Link to post
Share on other sites

Buenas Antoni, en primer lugar muchisimas gracias por su aportación, es muy interesante!

Sin embargo, esta macro sólo extrae la última fecha dentro de la celda, y sin relacionarla con la cadena de texto " Sub-task stamped".

Me faltaría añadir alguna condición para localizar todas las veces que se repite  "Sub-task stamped" dentro de la celda y extraer la fecha de la forma que indica en su macro.

Es posible que haya celdas que no tengan la cadena  "Sub-task stamped" y no haya que extraer nada.

Un cordial saludo

Share this post


Link to post
Share on other sites

¡Hola, a todos!

Puedes probar con el siguiente código:

Sub ExtraeFechas()
  Dim i&, j&, cadenas, fecha$
  
  Application.ScreenUpdating = False
  For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
    cadenas = Split(Range("B" & i), "Sub-task stamped")
    If UBound(cadenas) Then
      For j = 1 To UBound(cadenas)
        fecha = Split(cadenas(j), "/*")(1)
        Range("C" & i).Offset(, j - 1) = Trim(Mid(fecha, 2, 18))
      Next j
    End If
  Next i
  
  Erase cadenas
  Application.ScreenUpdating = True
End Sub

¡Bendiciones!

Share this post


Link to post
Share on other sites

John Jairo  V fantastica solución, muy creativa... la macro hace exactamente lo que quiero!

Muchisimas gracias por su valiosa ayuda. Doy por resuelto el tema!

Antoni muchas gracias también a usted por su aportación y dedicación

Un abrazo

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




×
×
  • Create New...

Important Information

Privacy Policy