Como dividir uma única linha de colunas em várias linhas e colunas?

0

Eu olhei para todo o lado e ou não sei como dizer isso para pesquisar, ou simplesmente não há nada lá fora. Originalmente, as informações da minha planilha de excel eram extraídas de um arquivo de texto. Eu tive que passar por um monte de trabalho (delimitar e encontrar / substituir) apenas para fazer com que ele fosse transferido adequadamente para o excel, e ainda não está certo, mas eu acho que vai funcionar. Infelizmente, colocou tudo em uma única linha (ou seja, A1, B1, C1, etc). Preciso que as informações sejam divididas em várias linhas;

     A | B
1 | id | 219832
2 | id | 2398
3 | id | 0382
etc

Ou isso, ou qualquer outra célula sendo considerada parte do cabeçalho e a célula seguinte a ser colocada na coluna apropriada;

     A  |  B   |   C   |   D
1 | id  | type | label | date
2 | 232 |  A   |  Here | 12/12/12
3 | 643 |  B   | There | 10/14/11
4 | 832 |  A   | None  | 09/29/13
etc

Isto é como isto aparece como dados, atualmente

    id | TTXW5IAXBSWDETCQZKGUNKK2RYKOVVFQ4S3VGCV | type | A | Label | Here | date | 12/12/12 | id 
etc

Se alguém puder me ajudar, eu agradeceria muito. Embora a segunda opção seja muito mais útil para mim, já que é para isso que realmente preciso transferir toda essa informação, a primeira opção seria aceitável, já que posso trabalhar à mão a partir daí. Além disso, só para você saber o quão grande isso é, minha linha se estende para JON1.

Editar:

Além disso, sem todo o find / replace (alguns, mas não tanto), os dados são colados em cada célula como

"id":"TTXW5IAXBSWDETCQZKGUNKK2RYKOVVFQ4S3VGCV"

E é assim que este caminho parece

    "id":"TTXW5IAXBSWDETCQZKGUNKK2RYKOVVFQ4S3VGCV" | "type":"A" | "label":"Here" | "date":"12/12/12" | {"id": 
etc

ou algo similar. Se isso fosse mais fácil de se trabalhar, então tudo ficaria bem também. Eu também estou percebendo, ao navegar pelos dados, que nem toda linha de dados vai começar com "id", sem usar find / replace para se livrar dela, o início de novas linhas de dados tem um {na frente dele ;

{"type":"A" |
{"id":"3242134" |
like that
    
por Eyanosa Triamonte 26.12.2014 / 13:43

2 respostas

0

A maneira mais fácil é através do VBA. Eu suponho que há um "campo" em cada célula na linha 1, como este

{"id" : "TTXW5IAXBSWDETCQZKGUNKK2RYKOVVFQ4S3VGCV" | "type" : "A" | "label": "Here" 

Você tem que ir para macro e criar um novo, insira o seguinte código:

 Sub test()
        Dim wks As Worksheet
        Set wks = ActiveSheet
        Final = False
        i = 1
        InitialRow = 2
        Dim labels(0 To 4) As String
        labels(0) = "id"
        labels(1) = "type"
        labels(2) = "label"
        labels(3) = "grouping"
        labels(4) = "created"
        While Final = False
            ThisCell = Trim(wks.Cells(1, i))
            iniChar = Left(ThisCell, 1)
            If iniChar = "{" Then
                lengthCell = Len(ThisCell)
                ThisCell = Trim(Right(ThisCell, lengthCell - 1))
                InitialRow = InitialRow + 1
            End If
            PosLabelinCell = InStr(ThisCell, ":")
            LabelinCell = Trim(Left(ThisCell, PosLabelinCell - 1))
            lLabelinCell = Len(LabelinCell)
            DatainCell = Trim(Mid(ThisCell, PosLabelinCell + 1))
            lDatainCell = Len(DatainCell)
            LabelinCell = Mid(LabelinCell, 2, lLabelinCell - 2)
            DatainCell = Mid(DatainCell, 2, lDatainCell - 2)
            Select Case LabelinCell
                Case labels(0)
                    wks.Cells(InitialRow, 1) = DatainCell
                Case labels(1)
                    wks.Cells(InitialRow, 2) = DatainCell
                Case labels(2)
                    wks.Cells(InitialRow, 3) = DatainCell
                Case labels(3)
                    wks.Cells(InitialRow, 4) = DatainCell
                Case labels(4)
                    wks.Cells(InitialRow, 5) = DatainCell
            End Select
            i = i + 1
            If wks.Cells(1, i) = "" Then
                Final = True
            End If
        Wend
End Sub

Ele passará por todas as células na primeira linha e verificará se uma célula começa com o símbolo {, assumindo isso como um caractere nova linha . Se um rótulo estiver ausente dos 4 que você me fornecer (id, tipo, rótulo, agrupamento, criado), ele deixará uma célula em branco.

Agora, execute a macro com F5 ou com o botão verde "play"; da linha 3, haverá todos os dados organizados por colunas.

    
por 26.12.2014 / 16:01
1

Você pode usar o recurso embutido do Excel.

Siga os passos abaixo:

  1. Vá para a guia Dados .
  2. No grupo Ferramentas de dados , você verá "Texto para colunas" Clique nele.

Agora siga as instruções no Assistente para converter texto em coluna conforme sua necessidade.

Se isso não ajudar você, forneça uma linha de entrada e uma saída desejada.

    
por 26.12.2014 / 15:14