Separar un texto en varias celdas con macros Excel VBA

Tengo un Archivo con muchos datos, ando buscando un código que me permite extraer una pequeña parte de un palabra en las celdas contiguas, Los datos tienen diferentes formas pero llevan un patrón único aveces inicia con un texto luego continua un punto y coma ( ; ) para luego presentarse el la frase terminando en el siguiente punto y coma ( ; ) claro aveces no ay puntos y comas puede ser al inicio o final lo que me gustaría es que se extraiga la frase en 3 celdas como se muestra en la imagen tomando como referencia o separador los slas ( / ) siempre van 3 palabras separadas por 2 ( / )

Las palabras a extraer se encuentran dentro de los 2 puntos y comas a veces pero en otros casos no hay al inicio o al final y vacías ni hay punto y comas, me gustara que se extraiga las frases en celdas por separado y si en caso no aya nada o este vació no ejecute nada. Alguna ayuda por favr

1 Respuesta

Respuesta
1

No es tan sencillo como parece, dices que el patrón es único, pero no, no es único jajaja

Este es el código:

Sub Depurar()
Application.ScreenUpdating = False
Dim uF As Long: uF = Range("A" & Rows.Count).End(xlUp).Row
Dim rRng As Range: Set rRng = Range("A1:A" & uF)
Dim cCol As Byte
Dim i As Byte
Dim rCell As Range
Dim TempStr() As String
For Each rCell In rRng.Cells
    TempStr = Split(rCell.Value, "/")
    If InStr(TempStr(0), ";") > 0 Then
        TempStr(0) = Right(TempStr(0), Len(TempStr(0)) - InStr(TempStr(0), ";"))
    End If
    If InStr(TempStr(UBound(TempStr)), ";") > 0 Then
        TempStr(UBound(TempStr)) = Left(TempStr(UBound(TempStr)), InStr(TempStr(UBound(TempStr)), ";") - 1)
    End If
    For i = LBound(TempStr) To UBound(TempStr)
        TempStr(i) = Trim(TempStr(i))
        cCol = i + 2
        Cells(rCell.Row, cCol).Value = TempStr(i)
    Next i
Next rCell
Application.ScreenUpdating = True
End Sub

video demo: video demo

Hay varias formas de hacer esto, para mi la mas fácil fue dividir el texto completo usando como separador el carácter /

Luego el ; solo puede estar en dos lugares, o en el primer item del array, o en el ultimo. Así que luego el código busca en el primer item si hay un ; borra todo lo que hay delante.

Si en el ultimo item hay un ; borra todo lo que hay detrás.

Luego hace un Trim a cada item para borrar cualquier espacio que se haya quedado flotando por ahí.

Excelente ayuda amigo y dígame si deseo que el resultado se vaya a la celda A3, ¿A9 y A20 respectivamente como lo lograría?

¿El resultado? ¿No son varios resultados a la vez? ¿Siempre son 3 frutas? ¿Por qué no hiciste la pregunta asi desde el inicio? Si no entiendo mal, habra que cambiar gran parte del codigo.

Si amigo disculpa siempre son 3 frutas separadas por el / ...

Tienen esta forma

.....; fruta1 / fruta2 / fruta3 ; .......

Siempre se separa por el / y en muchos casos no hay ; al inicio o al final o en ambos lados.

Alguna ayuda por favor

La ayuda te la di en la primera respuesta. No entiendo que es lo que necesitas ahora. Estas haciendo una pregunta nueva

¿Puedo formular una pregunta nueva para seguir con tu orientación? Por favor.

Tu código esta bien pero solo son 3 frutas con esas mismas condiciones mencionadas

Si si claro, pero explica bien lo que necesitas ahora

No importa cuantas son, lo que no entiendo es donde va a quedar el resultado, ni de donde viene el texto original

¡Gracias! Aquí esta mo consulta el texto se encuentra en la celda B2 claro cada día cambia por eso necesitaba el código

Separar una parte del texto de una celda en 3 celdas escogidas excel vba

Lo que pediste en esa pregunta requiere más tiempo del que solemos dar. No es tan sencillo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas