Una macro que identifique si en una columna hay mas de un valor y si lo hay agregue una fila debajo

tengo una planilla de excel que exporto de un sistema y en dos columnas hay más de un dato separado por coma.

necesito separar esos datos, ya sean dos o más, y que se agregue una fila o más, según la cantidad de datos a separar, y cada dato aparezca en una fila distinta.

1 Respuesta

Respuesta
1

Mándame un archivo con datos y un ejemplo explicado para poder ayudarte

[email protected]

Buenos días

Verás en el ejemplo que las columnas O y X, pueden contener más de un dato, que están separados por comas.

Ahora bien, lo que necesito, es que en esos casos donde hay más de un dato, es separar esos valores, para que cada uno esté en una fila. Es decir agregar otra fila debajo y ubicar el valor y así que quede un dato por columna. Entonces si tengo una columna con dos valores, queda el primer valor en esa celda, el segundo tiene que ir abajo en una fila nueva que se agrega.

No tengo opción de adjuntar archivo en este mensaje, dime como te lo puedo enviar.

Muchas gracias

Slds

En mi anterior post te anoté mi mail

Te paso la solución y sigue estas instrucciones:

-Posiciónate en el encabezado de la columna O (O3) y después ejecuta esta macro.

Con esto habremos arreglado la columna O

-Cuando acabe la macro te posicionas en el encabezado de la columna X (X3) y después vuelves a ejecutar la macro y habrás arreglado la columna X

Sub macro_luis()
'por luismondelo
Control = 0
Cells(65000, ActiveCell.Column).End(xlUp).Offset(1, 0).Value = "end"
Do While ActiveCell.Value <> "end"
If InStr(ActiveCell, ",") > 0 Then
'++++++++++++++++++++++++++++++++++++++
For x = 1 To Len(ActiveCell) + 1
extrae = Mid(ActiveCell, x, 1)
'++++++++++++++++++++++++++++++++++++++
If extrae = "" Then
ActiveCell.Offset(1, 0).EntireRow.Insert
ActiveCell.Offset(1, 0).Value = lista
lista = ""
End If
'++++++++++++++++++++++++++++++++++++++
If extrae = "," And Control = 0 Then
lista = ""
Control = Control + 1
GoTo saltito
End If
'++++++++++++++++++++++++++++++++++++++
If extrae = "," And Control <> 0 Then
ActiveCell.Offset(1, 0).EntireRow.Insert
ActiveCell.Offset(1, 0).Value = lista
lista = ""
GoTo salto
End If
'++++++++++++++++++++++++++++++++++++++
lista = lista & extrae
salto:
saltito:
Next
End If
'++++++++++++++++++++++++++++++++++++++
ActiveCell.Offset(Control + 1, 0).Select
Control = 0
Loop
ActiveCell.ClearContents
End Sub

no olvides finalizar la consulta

Estimado Luis

Lo que habría que modificar, es que cuando la macro separa los valores y los inserta debajo, debe agregar una fila en blanco.

No interesa que esa fila solo tenga completa la columna O y X, justamente esas columnas son las que importar para que tengan un valor por fila.

Ahora con la macro que me has pasado se mezclan los datos.

Muchas gracias

Slds

debería haber aclarado que agregue una fila completa debajo

Disculpa pero no entiendo... con mi macro se inserta una fila en blanco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas