Dividir Celula en columna

Solo consultas sobre Funciones y Fórmulas Excel.
Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Responder
haroldchfr
Miembro Frecuente
Miembro Frecuente
Mensajes: 20
Registrado: 29 Jun 2005 10:05
Ubicación: la palma

Dividir Celula en columna

Mensaje por haroldchfr » 28 Jun 2019 04:43

Hola a todo,

Necesito vuestra ayuda. En una celula tango datos compilados y necesito separarlos en columna.

Exemplo 1

En la columna A tengo

Linea 1 :Nombre~xanitos¬Apellido~Juan¬Departamento~23070¬telefono~222222307¬
Linea 2 :Nombre~juan¬Apellido~Ramon¬Departamento~23050¬telefono~222222444¬
Etc.

Necesito 2

Columna A Columna B Columna C Columna D
Nombre Apellido Departamento Telefono
Xanitos Juan 23070 222222307
Juan Ramon 23050 222222444


Puedo dividir la cellula con la funcion Text to Columns, pero no funciona bien ya que a veces tengo celulas sin Nombre o Apellido o Departamento o telefono

Ejemplo

Linea 3 :Apellido~Moguel¬Departamento~23050¬telefono~222229944¬
Linea 4: Nombre~Victoria¬Departamento~12050¬telefono~2225552444¬


Si alguien tiene una idea seria de gran ayuda.
Nota que el separador sera siempre sera este signo ¬
Y que lo datos seran siempre , Nombre , Apellido , Departamento , Telefono.Alguno de estos puede faltar.


Muchas gracias,
Saludos,
Harold



Leopoldo Blancas
Miembro Frecuente
Miembro Frecuente
Mensajes: 804
Registrado: 11 Ene 2019 00:48

Re: Dividir Celula en columna

Mensaje por Leopoldo Blancas » 28 Jun 2019 13:56

Hola,

Podrías subir el archivo muestra, para probar, de otra forma se me hace difícil (flojera hacer todo) ayudar.

Saludos.



hc3115
Miembro Frecuente
Miembro Frecuente
Mensajes: 969
Registrado: 08 May 2012 14:43

Re: Dividir Celula en columna

Mensaje por hc3115 » 30 Jun 2019 05:28

Con estas líneas en la columna A:

Nombre~xanitos¬Apellido~Juan¬Departamento~23070¬telefono~222222307¬
Nombre~juan¬Apellido~Ramon¬Departamento~23050¬telefono~222222444¬
Apellido~Moguel¬Departamento~23050¬telefono~222229944¬
Nombre~Victoria¬Departamento~12050¬telefono~2225552444¬

el siguiente código funciona:

Código: Seleccionar todo

Sub separar()

Dim r As Range, fr%
Dim s$, p1%, p2%
Dim a, ca%, b
    Set r = Range("A1", Range("A1").End(xlDown))
Dim m(), n%
ReDim m(r.Rows.Count, 4)

    a = Array("Nombre", "Apellido", "Departamento", "telefono")
    b = Array(6, 8, 12, 8) 'Nombre = 6, Apellido = 8, etc.
    For fr = 1 To r.Rows.Count
        s = r(fr, 1): If Len(Trim(s)) = 0 Then Exit For
        n = n + 1
            
            For ca = 1 To 4
                m(n, ca) = ""
                
                p1 = InStr(1, s, a(ca), vbTextCompare)
                If p1 > 0 Then
                    p2 = InStr(p1, s, "¬")
                    m(n, ca) = Mid(s, p1 + b(ca) + 1, p2 - p1 - b(ca) - 1)
                End If
                
            Next
    Next

Cells(r(fr, 1).Row + 1, 1).Resize(n + 1, 4).NumberFormat = "@"
Cells(r(fr, 1).Row + 1, 1).Resize(1, 4) = Array("Nombre", "Apellido", "Departamento", "teléfono")
Cells(r(fr, 1).Row + 2, 1).Resize(n, 4) = m
Cells(r(fr, 1).Row, 1).Select
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = ActiveCell.Row

End Sub



haroldchfr
Miembro Frecuente
Miembro Frecuente
Mensajes: 20
Registrado: 29 Jun 2005 10:05
Ubicación: la palma

Re: Dividir Celula en columna

Mensaje por haroldchfr » 03 Jul 2019 07:18

Hola,
Muchas gracias.
Tengo un mensaje de error en este linea :

p1 = InStr(1, s, a(ca), vbTextCompare)


Muchas gracias,
Saludos,
Harold



haroldchfr
Miembro Frecuente
Miembro Frecuente
Mensajes: 20
Registrado: 29 Jun 2005 10:05
Ubicación: la palma

Re: Dividir Celula en columna

Mensaje por haroldchfr » 04 Jul 2019 17:56

Hola,
Intente de nuevo pero desde la linea2 pero esta vez tengo un error en esta linea:

Cells(r(fr, 1).Row + 2, 1).Resize(n, 4) = m

Gracias,
Saludos, :shock:
Harold



Responder