Visual Basic para Aplicaciones - Duda macro separar texto en columnas

Life is soft - evento anual de software empresarial
   
Vista:

Duda macro separar texto en columnas

Publicado por mario (4 intervenciones) el 20/07/2016 17:02:10
Hola,

Tengo unas celdas que contienen este tipo de datos: 100-101, 203-504, ...
Estás seguidas. Estoy con una macro para separar el texto y me lo divida en columnas de modo que quede así:

100, 101, 203, 504...

El problema es que al separar, 101 se come lo que hay en la siguiente celda, 203 y esta macro no me sirve. Quedaría así: 100, 101, 504 ¿alguna idea e cómo hacerlo sin tener que ir insertando columnas en blanco entre cada celda y usar la macro columna por columna cada vez? ¿aguna idea de cómo dejarlo en la hoja 2? Os adjunto en excel el ejemplo,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub SepararPalabras()
'
Dim texto As String
Dim I As Integer
Dim Columna, Col As Integer
Dim Separador As String
Dim Palabras() As String
Dim Celda As Range
 
    Columna = ActiveCell.Column
 
    Separador = InputBox("Caracter de separación:")
 
    For Each Celda In Selection
        Col = Columna
        texto = Celda.Value
 
        Palabras = Split(texto, Separador)
 
 
        For I = 0 To UBound(Palabras)
            Col = Col + 1
            Cells(Celda.Row, Col).Value = Palabras(I)
        Next I
 
    Next Celda
End Sub

Mil gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana

Duda macro separar texto en columnas

Publicado por Antoni Masana (48 intervenciones) el 22/07/2016 17:19:22
El excel incorpora una opción que hace esto muy bien.

Esta en la pestaña Datos y en el grupo Herramientas de datos el icono Texto en columnas

Esta es la macro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Macro1()
'
' Macro1 Macro
'
 
'
    Selection.TextToColumns Destination:=Range("E6"), _
                            DataType:=xlDelimited, _
                            TextQualifier:=xlDoubleQuote, _
                            ConsecutiveDelimiter:=True, _
                            Tab:=True, _
                            Semicolon:=False, _
                            Comma:=False, _
                            Space:=True, _
                            Other:=False, _
                            FieldInfo:=Array(Array(1, 1), Array(2, 1)), _
                            TrailingMinusNumbers:=True
End Sub

Esto te resuelve el problema del FOR. Para sacar este codigo ejecuta GRABAR MACRO y selecciona el rango de celdas pulsa el icono, sigue las instrucciones finaliza y finaliza la MACRO y veras un bonito codigo que te lo hace la mar de bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar