Recorrer una columna extrayendo textos separados por comas y texto numérico de las celdas

Hola,

 Desearía que me ayudaran con una macro en Excel que no consigo resolver, se trata de que vaya recorriendo la columna A y vaya extrayendo y pegando en las columnas B, C, D y E respectivamente solo determinado contenido de la celda separado por comas y una cantidad numérica que aparece al final.

Es decir, tengo la columna A formada por celdas con el siguiente formato:

aaaa, aaaaa, aa 20 mm 23,45

bb, bbb, bbbbbb 33 l 7,8

ccc, cccc, ccccc 15 cc 9

NOTA: he tenido especial cuidado para en poner en el ejemplo los espacios tal y como están en las celdas.

   Me gustaría obtener el siguiente resultado, separado en columnas:

columna B    columna C        Columna D         Columna E

(producto)    (descripción)    (volumen)            (precio)

aaaa             aaaaa              aa 20 mm           23,45  

bb                 bbb                 bbbbbb 33 l        7,80

ccc                cccc                ccccc 15 cc         9,00

Muchas gracias.

1 Respuesta

Respuesta
1

Aquí tienes la solución. Para el ejemplo los datos están escritos desde la celda a1 hacia abajo. Y lo arreglará en las columnas contiguas. (No olvides finalizar y puntuar por favor)

Sub separar()

fila = 1

columna = 3

Range("a1").Select

Do While ActiveCell.Value <> ""

tope = Len(ActiveCell.Value)

For x = 1 To tope + 1

extrae = Mid(ActiveCell, x, 1)

If extrae = "," And IsNumeric(Total) Then GoTo salto

If extrae = "" Then

Cells(fila, columna).Value = CDbl(Total)

columna = columna + 1

Total = ""

extrae = ""

End If

If IsNumeric(extrae) And Left(Total, 1) = " " And Right(Total, 1) = " " And Len(Total) > 4 Then

Cells(fila, columna).Value = Total

columna = columna + 1

Total = ""

End If

If extrae = "," And Total <> "" Then

Cells(fila, columna).Value = Total

columna = columna + 1

Total = ""

extrae = ""

End If

salto:

Total = Total & extrae

Next

ActiveCell.Offset(1, 0).Select

fila = fila + 1

columna = 3

Loop

For Each celda In Range("c1:e" & Range("c10000").End(xlUp).Row)

celda.Value = Application.WorksheetFunction.Trim(celda)

Next

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas