Macro para extraer texto que se encuentra entre caracteres de una celda

Tengo una columna con celdas en excel que tienen un texto extenso y dentro de ese texto necesito extraer cierta información que se encuentra entre caracteres, ejemplo:
05/06/19 3:15 pm nueva en el foro de todoexperto #codigo12345678910, necesito ayuda, 05/06/19 
lo que necesito extraer son los tres datos despues del "#" los copie y pegue en otra hoja del mismo libro en diferentes columnas. Tomando en cuenta que no en todas las celdas
se encuentra dicha informacion.

1 respuesta

Respuesta
1

Este es el resultado de la macro así esta en la hoja 1

y este es el resultado en la hoja 2

y esta es la macro la cual ignorara aquellas líneas donde no tenga el carácter #

Sub test()
Set datos = Range("a1").CurrentRegion
With datos
    filas = .Rows.Count
    Set resultado = Sheets("hoja2").Range("b2").Resize(filas, 3)
    matriz = resultado
    For i = 1 To filas
        dato = .Cells(i, 1)
        On Error Resume Next
        separa = Split(dato, "#")
        If Err.Number = 0 Then
            separa2 = Split(separa(1), " ")
            matriz(i, 1) = separa2(1)
            matriz(i, 2) = separa2(2)
            matriz(i, 3) = separa2(3)
        End If
        On Error GoTo 0
    Next i
End With
Sheets("hoja2").Range(resultado.Address) = matriz
Erase matriz
Set datos = Nothing
End Sub

Hola @James Bond  gracias, quisiera extraer lo que sigue después del "#"   el texto que esta entre las comas y la fecha que sigue después de la coma.

Y Al ejecutar la macro quedara algo así.

Gracias de antemano ojalá me puedas ayudar!

¿Veo qué tenemos dos diferentes versiones de Excel y quizá de información también puedes poner unos 2 ejemplos más de tus datos solo para validar que estamos en el mismo canal?, ya probé la macro y me sigue dando el resultado de la segunda imagen que subí.

creo la version de  excel no es problema porque probe la macro y corrió sin ningún error.

en la siguiente imagen que adjunto es un ejemplo de los datos de la primera hoja de excel, he pintado de colores el texto que quiero extraer.

en la siguiente imagen es como quedaría.

ojala quede un poco más claro, Gracias!

Esta es la imagen con tus datos, más tu dato inicial, ¿por qué no funciono la primera macro?, fue porque omitiste decir que son dos los caracteres # que manejas y esto cambia todo el orden del resultado final

con la modificacion de la macro el resultado es este

y esta es la macro modificada, ahora la separación la hace por comas y no por espacios vacíos.

Sub test()
Set datos = Sheets("hoja1").Range("a1").CurrentRegion
With datos
    filas = .Rows.Count
    Set resultado = Sheets("hoja2").Range("b2").Resize(filas, 2)
    matriz = resultado
    For i = 1 To filas
        dato = .Cells(i, 1)
        On Error Resume Next
        separa = Split(dato, "#")
        If Err.Number = 0 Then
            separa2 = Split(separa(1), ",")
            matriz(i, 1) = separa2(1)
            matriz(i, 2) = separa2(2)
        End If
        On Error GoTo 0
    Next i
End With
With Sheets("hoja2").Range(resultado.Address)
    .Value = matriz
    .EntireColumn.AutoFit
End With
Erase matriz
Set datos = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas