Separar texto entre comas mediante Macro

Tengo en un excel con 6 columnas donde una de ellas contiene varias palabras separadas por coma. Con la siguiente macro lo que consigo es insertar/copiar la misma fila, tantas veces como yo le indique:

Sub Macro1()
Dim Filas As Single, MiRango As Object
Filas = ActiveCell.Value2
Set MiRango = Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(Filas, 0))
MiRango.EntireRow.Insert (xlShiftDown)
ActiveCell.Offset(0, -6).Copy Destination:=MiRango.Offset(-Filas, -6)
ActiveCell.Offset(0, -5).Copy Destination:=MiRango.Offset(-Filas, -5)
ActiveCell.Offset(0, -4).Copy Destination:=MiRango.Offset(-Filas, -4)
ActiveCell.Offset(0, -3).Copy Destination:=MiRango.Offset(-Filas, -3)
ActiveCell.Offset(0, -2).Copy Destination:=MiRango.Offset(-Filas, -2)
ActiveCell.Offset(0, -1).Copy Destination:=MiRango.Offset(-Filas, -1)
If MiRango.Cells(1, 1).Value2 <> "" Then
Selection.End(xlDown).Select
Else
MiRango.Cells(1, 1).Select
End If
Set MiRango = Nothing
End Sub  

El problema está en la columna 2, cuyo contenido es, por ejemplo:

"vaca, pasto, granja"

Son palabras y/o números separados por comas.

Lo que quiero es que esta columna no se copie tal cual como hace la macro, sino que en la primera fila que inserte, la columna 2 contenga "vaca", la siguiente "pasto", y la siguiente "granja".

Respuesta
1

Te mando un ejemplo para que lo adaptes a tus necesidades, sigue mis pasos:

Escribe en la celda A1 lo siguiente:

Vaca, pasto, 4589, granja

Ahora ejecuta esta macro y observa el resultado.

Sub separar()
fila = 1
tope = Len(Range("a1"))
For x = 1 To tope + 1
extrae = Mid(ActiveCell, x, 1)
If extrae = " " Then GoTo salto
If x = tope + 1 Then
Cells(fila, 2).Value = lista
fila = fila + 1
extrae = ""
lista = ""
End If
If extrae = "," Then
Cells(fila, 2).Value = lista
fila = fila + 1
extrae = ""
lista = ""
End If
lista = lista & extrae
salto:
Next
End Sub

recuerda finalizar y puntuar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas