Macro para separar

12/12/2007 - 23:35 por Manny_90 | Informe spam
Que tal.

Apreciaria mucho su ayuda si me ayudan a generar una macro que me separe por
columna datos de una celda en especifica.
Por ejemplo, tengo mi tabla:

Level Item Number Ref Des Item Description Quantity
0 G0100023-461 PCA DRGC-2C 0
1 G600002-105-461 C7,C714,C732,C734, CCAP,1uF,0402,X5 12
C756,C768,C781,C875,
C927,C1093,C1114,
C1117
1 G611009-107-461 C401,C402,C406, TCAP,100uF,7343 5
C408,C1404


Nivel, Numero de parte, ref des, Descripcion, Cantidad.

Lo que necesito es separar la lista de materiales por "ref des", es decir,
me gustaria tener un resultado asi:

Level Item Number Ref Des Description Quantity
0 G0100023-461 PCA DRGC-2C 0

1 G600002-105-461 C7 CCAP,1uF,0402,X5 12
C714 CCAP,1uF,0402,X5 12
C732 CCAP,1uF,0402,X5 12
C734 CCAP,1uF,0402,X5 12
C756 CCAP,1uF,0402,X5 12
C768 CCAP,1uF,0402,X5 12
C781 CCAP,1uF,0402,X5 12
C875 CCAP,1uF,0402,X5 12
C927 CCAP,1uF,0402,X5 12
C1093 CCAP,1uF,0402,X5 12
C1114 CCAP,1uF,0402,X5 12
C1117 CCAP,1uF,0402,X5 12

1 G611009-107-461 C401 TCAP,100uF,7343 5
C402 TCAP,100uF,7343 5
C406 TCAP,100uF,7343 5
C408 TCAP,100uF,7343 5
C1404 TCAP,100uF,7343 5


En si la tabla tiene mas de 50 numeros de parte con sus respectivvos "Ref
des",
lo que no puedo es separarlos, y acomodarlos como el ejemplo.

Muchas gracias por su ayuda!!

Manny_90
 

Leer las respuestas

#1 Héctor Miguel
13/12/2007 - 06:46 | Informe spam
hola, (...) ?

suponiendo que la tabla original esta en la "hoja1"... que los titulos estan en la fila 1...
que los datos inician en la fila 2... y que estamos hablando de las columnas A:D -???-

el siguiente ejemplo agrega una hoja nueva con la distribucion de los datos como en tu ejemplo
(aunque la "tabla tabulada/espaciada" no paso muy bien que digamos -visualmente-) :-((

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Nueva_distribucion_de_datos()
Application.ScreenUpdating = False
Dim Celda As Range, FilaX As Integer, nFilas As Byte, nDesc As Byte, _
Sig As Byte, RefDes As String
With Worksheets("hoja1")
Worksheets.Add After:=Worksheets(.Index)
FilaX = .Range("a65536").End(xlUp).Row
For Each Celda In .Range("a2:a" & FilaX).SpecialCells(xlCellTypeConstants)
If Celda.Row = FilaX Then nFilas = .Range("c65536").End(xlUp).Row - Celda.Row + 1 _
Else nFilas = IIf(Celda.Offset(, 1) = "", 1, Celda.End(xlDown).Row - Celda.Row)
With Range("a65536").End(xlUp).Offset(Sig + 1)
Sig = Celda.Offset(, 4) - (Celda.Offset(, 4) = 0)
.Resize(, 5).Value = Celda.Resize(, 5).Value: RefDes = ""
If Celda.Offset(, 4) Then
For nDesc = 1 To nFilas: RefDes = RefDes & Celda.Offset(nDesc - 1, 2): Next
.Offset(, 2).Resize(Sig).Value = _
Evaluate("{""" & Application.Substitute(RefDes, ",", """;""") & """}")
.Offset(, 3).Resize(Sig, 2).Value = Celda.Offset(, 3).Resize(, 2).Value
End If
End With
Next
Range("a1").Resize(, 5).Value = .Range("a1").Resize(, 5).Value
End With
Range("a1").Resize(, 5).EntireColumn.AutoFit
End Sub

__ la consulta original __
... macro que me separe por columna datos de una celda en especifica.
Por ejemplo, tengo mi tabla:
Level Item Number Ref Des Item Description Quantity
0 G0100023-461 PCA DRGC-2C 0
1 G600002-105-461 C7,C714,C732,C734, CCAP,1uF,0402,X5 12
C756,C768,C781,C875,
C927,C1093,C1114,
C1117
1 G611009-107-461 C401,C402,C406, TCAP,100uF,7343 5
C408,C1404
Lo que necesito es separar la lista de materiales por "ref des", es decir, me gustaria tener un resultado asi:
Level Item Number Ref Des Description Quantity
0 G0100023-461 PCA DRGC-2C 0

1 G600002-105-461 C7 CCAP,1uF,0402,X5 12
C714 CCAP,1uF,0402,X5 12
C732 CCAP,1uF,0402,X5 12
C734 CCAP,1uF,0402,X5 12
C756 CCAP,1uF,0402,X5 12
C768 CCAP,1uF,0402,X5 12
C781 CCAP,1uF,0402,X5 12
C875 CCAP,1uF,0402,X5 12
C927 CCAP,1uF,0402,X5 12
C1093 CCAP,1uF,0402,X5 12
C1114 CCAP,1uF,0402,X5 12
C1117 CCAP,1uF,0402,X5 12

1 G611009-107-461 C401 TCAP,100uF,7343 5
C402 TCAP,100uF,7343 5
C406 TCAP,100uF,7343 5
C408 TCAP,100uF,7343 5
C1404 TCAP,100uF,7343 5

En si la tabla tiene mas de 50 numeros de parte con sus respectivvos "Ref des"
lo que no puedo es separarlos, y acomodarlos como el ejemplo.

Preguntas similares