Separar por renglones

22/10/2008 - 04:27 por Manny_90 | Informe spam
Que tal.
Me gustaria que me ayudaran a generar un macro que me separe datos en
columnas, en algunas celdas tengo ciertos datos que estan agrupados:

R2
R70-72
C74-76
C90
C91
LB93-104

Lo que me gustaria hacer es que cada vez que contenga una agrupacion, que la
divida entre renglones
por ejemplo:

R2
R70
R71
R72
C74
C75
C76
C90
C91
LB93
LB94
LB95
LB96
LB97
LB98
LB99
LB100
LB101
LB102
LB103
LB104

El resultado me gustaria que fuera en la misma columna, es decir, que cada
vez que exista una agrupacion agrege el numero de referencias y las divida.

Muchas Gracias
Manny_90
 

Leer las respuestas

#1 Cacho
22/10/2008 - 08:02 | Informe spam
Hola! Manny_90. Incorpora en un módulo normal la siguiente macro:
_____________________________________

Sub GeneraRangos()
Dim Rng As Range, Celda As Range, RngTmp As Range
Dim ii As Integer, Txt As String, Aaa As Variant

On Error Resume Next
Set Rng = Application.InputBox( _
Prompt:="Seleccione el rango de celdas a procesar", Type:=8)
On Error GoTo 0
If Rng Is Nothing Then Exit Sub

Application.ScreenUpdating = False
Set RngTmp = Rng(1).Offset(0, 1)
For Each Celda In Rng
'Establezco el literal en "Txt"
ii = 1
Do While Asc(Mid(Celda, ii + 1, 1)) > 57: ii = ii + 1: Loop
Txt = Left(Celda, ii)
'Establezco rango numérico en "Aaa(0) y Aaa(1)"
Aaa = Split(Right(Celda, Len(Celda) - ii), "-")

'Llena rango
With RngTmp
If LBound(Aaa) = UBound(Aaa) Then
RngTmp = Txt & Aaa(0)
Set RngTmp = .Offset(1, 0)
Else
Range(RngTmp, .Offset(Aaa(1) - Aaa(0), 0)).ClearContents
RngTmp = Txt & Aaa(0)
Range(RngTmp, .Offset(Aaa(1) - Aaa(0), 0)).DataSeries Type:=xlAutoFill
Set RngTmp = .Offset(1 + Aaa(1) - Aaa(0), 0)
End If
End With

Next Celda

Range(RngTmp, Cells(65536, RngTmp.Column)).Delete xlShiftUp
Application.ScreenUpdating = True
End Sub

_____________________________________

Este código crea a la derecha de la columna seleccionada, el rango de
códigos correspondiente.

Pruébala y comenta.
Saludos, Cacho.

Preguntas similares