Como dividir los datos de una columna a varias columnas de Excel

El archivo me lo entregan con la columna A con CLIENTES, PROYECTO, COLABORADORES Y NECESIDADES. Necesito que cada una este en una columna diferente, con su información correspondiente. Cree una BBDD con archivos diferentes de cada uno. Hasta ahí llegué.

1 Respuesta

Respuesta
2

Los datos en la columna A están separados por comas, por punto y coma o por algún separador que indique la separación de los datos.

Puedes poner una muestra representativa de cómo están los datos y cómo los quieres.

Gracias Dante, 

el primer recuadro es como lo recibo, en el segundo recuadro lo hago desde la columna E. El color azul es cliente, el color azul claro es proyecto, el blanco es colaborador y el rosa necesidades. Gracias

1. Los espacios antes del texto son sangrías (tabuladores) o son espacios en blanco.

2. Las necesidades, siempre empiezan con la palabra "Necesidad"

Si, son sangrías. y hay Necesidades y Requisición 

En tu ejemplo solamente están visibles 2 columnas, entonces voy a suponer cómo quieres las columnas 3 y 4, tal vez sea necesario algún ajuste.

Prueba la siguiente macro, los resultados estarán a partir de la columna E.

Sub Dividir_Datos()
'Por Dante Amor
  Dim c As Range
  Dim i As Long, n As Long
  '
  Range("E2:H" & Rows.Count).ClearContents
  For Each c In Range("A2", Range("A" & Rows.Count).End(3))
    n = c.IndentLevel
    If LCase(c.Value) Like LCase("Necesidad*") Or LCase(c.Value) Like LCase("Requisición*") Then n = 3
    If n = 0 Then Cells(c.Row, "F").Value = "Cliente"
    If n = 1 Then Cells(c.Row, "E").Value = Cells(c.Row - 1, "E").Value
    If n >= 2 Then
      Cells(c.Row, "E").Value = Cells(c.Row - 1, "E").Value
      Cells(c.Row, "F").Value = Cells(c.Row - 1, "F").Value
      Cells(c.Row, "G").Value = Cells(c.Row - 1, "G").Value
    End If
    Cells(c.Row, Columns("E").Column + n).Value = c.Value
  Next
End Sub

Buen día Dante, uff un crack, gracias por tu ayuda. Solo dos cositas:

1. en necesidad debe estar en blanco, no debe tener nombre de ningun colaborador

2. y las que están en blanco en la columna L puede aparecer el nombre del proyecto que esta en la columna K. Gracias, gracias, gracias

Cambie el código por las columnas

Sub Dividir_Datos()
'Por Dante Amor
  Dim c As Range
  Dim i As Long, n As Long
  '
  Range("J2:M" & Rows.Count).ClearContents
  For Each c In Range("A2", Range("A" & Rows.Count).End(3))
    n = c.IndentLevel
    If LCase(c.Value) Like LCase("Necesidad*") Or LCase(c.Value) Like LCase("Requisición*") Then n = 3
    If n = 0 Then Cells(c.Row, "K").Value = "Cliente"
    If n = 1 Then Cells(c.Row, "J").Value = Cells(c.Row - 1, "J").Value
    If n >= 2 Then
      Cells(c.Row, "J").Value = Cells(c.Row - 1, "J").Value
      Cells(c.Row, "K").Value = Cells(c.Row - 1, "K").Value
      Cells(c.Row, "L").Value = Cells(c.Row - 1, "L").Value
    End If
    Cells(c.Row, Columns("J").Column + n).Value = c.Value
  Next
End Sub

Prueba la siguiente:

Sub Dividir_Datos_v1()
'Por Dante Amor
  Dim c As Range
  Dim i As Long, n As Long
  '
  Range("J2:M" & Rows.Count).ClearContents
  For Each c In Range("A2", Range("A" & Rows.Count).End(3))
    n = c.IndentLevel
    If LCase(c.Value) Like LCase("Necesidad*") Or LCase(c.Value) Like LCase("Requisición*") Then
      n = 3
    End If
    Cells(c.Row, Columns("J").Column + n).Value = c.Value
    Select Case n
      Case 0
        Cells(c.Row, "K").Value = "Cliente"
      Case 1
        Cells(c.Row, "J").Value = Cells(c.Row - 1, "J").Value
        Cells(c.Row, "L").Value = Cells(c.Row, "K").Value
      Case Is > 1
        Cells(c.Row, "J").Value = Cells(c.Row - 1, "J").Value
        Cells(c.Row, "K").Value = Cells(c.Row - 1, "K").Value
    End Select
  Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas