Visual Basic para Aplicaciones - Duda macro separar texto en columnas

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Duda macro separar texto en columnas

Publicado por mario (6 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
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Duda macro separar texto en columnas

Publicado por Antoni Masana (498 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

Duda macro separar texto en columnas

Publicado por Jorge (1 intervención) el 12/10/2017 18:48:18
Si lo que deseo ordenar está en un rango variable, como declaro eso en la instrución:

En el ejemplo anterior el Range("E6"), pero dentro de la misma hoja tengo diferentes grupos a formatear, como declaro el rango ese como una variable segun la selección.

Range("E6"),

Saludos,
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

Duda macro separar texto en columnas

Publicado por JOSE RINCON (2 intervenciones) el 26/07/2018 17:55:05
Perfecto esta muy, ahora bien como haria si quisiera que me preguntara el destino?... que me salga una msgbox preguntandome el destino.
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
sin imagen de perfil

Duda macro separar texto en columnas

Publicado por JORDI (5 intervenciones) el 24/03/2021 14:48:30
Hola i Bon dia. Sr. Antoni Masana
He usado esta misma macro (casi idéntica) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Worksheet_Activate()
Range("C6:C5000").Copy Range("D6:D5000")
Range("A1").Select
Selection.TextToColumns Destination:=Range("D6"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=True, OtherChar:="=", _
FieldInfo:=Array(Array(1, 1), Array(2, 1)), _
TrailingMinusNumbers:=True
 
End Sub
...............................

...y tengo Error 1004 en tiempo de ejecución (excel 19) -Finalizar, Depurar-.

La flecha indicadora (amarilla) se queda marcando "TrailingMinusNumbers:=True"

¿Me puede indicar que solución darle?


Gràcies.
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

Duda macro separar texto en columnas

Publicado por JOSE RINCON (2 intervenciones) el 26/07/2018 17:56:02
Perfecto esta muy, ahora bien como haria si quisiera que me preguntara el destino?... que me salga una msgbox preguntandome el destino. ademas del caracter de separacion, que me preguntara el destino.
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