Como faço para converter uma lista delimitada em uma tabela de várias colunas no excel?

3

Eu tenho uma lista como esta:

Friut;Taste;Color;Other;Apple;Good;Red and Blue;1;Orange;Really Good;Orange;12

E eu quero convertê-lo selecionando cada 4 delimitações e transformando-as em linhas como esta:

Fruit    Taste     Color     Other
Apple    Good      Red and G.1
Orange   Really Go.Orange    12

Como isso é possível com o Libreoffice (preferido), Openoffice ou Excel?

Edit: O acima é um exemplo. Eu estou usando para selecionar 4 delimitações, mas existem cerca de 500 linhas que eu preciso para isso.

Edit2: Forneceu minha própria resposta (correta)

    
por stonewareslord 24.08.2013 / 17:06

3 respostas

0

Minha resposta veio do user49740:

sed -re 's/([^;]*);([^;]*);([^;]*);([^;]*);?/,,,\n/g' input.txt > output.txt

A primeira metade da string:

([^;]*);([^;]*);([^;]*);([^;]*);?

Encontra 4 grupos de ([^;]*) (todos os caracteres antes do ponto e vírgula) e depois um ponto e vírgula. O segundo semestre:

,,,\n

Altera o texto para o formato CSV. > output.txt irá gravar o arquivo convertido em output.txt.

    
por 22.07.2014 / 18:31
1

Macro VBA para dividir linhas inteiras em várias linhas

Comessamacro,vocêdividelinhasinteirasemváriaslinhas.Vocêpodeescolherquantascolunasdesejaapósadivisão.bastaalterarovalordeiSplitnaprimeiralinha.Eunãousoumdelimitadorespecífico,apenascontagensdecolunas.

Comenteitodosospassos.Éfácilajustaramacroàssuasnecessidadespessoais.

  1. AbraoeditorExceleVBAcomAlteF11
  2. Nopainelesquerdo,coleocódigonafolhaondeseusdadossãocolocados
  3. Modifiqueasduasprimeiraslinhasdeacordocomsuasnecessidades
  4. ExecuteamacrocomF5
ConstiSplit=4'##howmanycolumnsdoyouwantaftersplittingSubtransposeColumn()'##searchthelastrowtoknowhowmanyrowswehavetoiteratethroughiLastRow=Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row

    '## begin to loop through every row. Begin at last row and go upwards
    For r = iLastRow To 1 Step -1

        '## search the last column in the current row
        iLastCol = Rows(r).Find("*", Cells(r, 1), , , xlByColumns, xlPrevious).Column

        '## calculate how many new rows we need to insert for this row
        iNewRows = WorksheetFunction.RoundUp(iLastCol / iSplit, 0) - 1

        '## begin to copy and insert new rows, one by one
        For c = 1 To iNewRows

            '## insert a new blank line where we can copy values to
            Rows(r + c).Insert Shift:=xlDown

            '## set the source range for easier access later
            Set rngSrc = Range(Cells(r, iSplit * c + 1), Cells(r, iSplit * c + iSplit))

            '## copy and paste the range
            rngSrc.Copy Destination:=Cells(r + c, 1)

            '## clear all cells which we have just copied
            rngSrc.Clear
        Next c
    Next r
End Sub
    
por 25.08.2013 / 00:49
0

Se a lista for um arquivo de texto, você pode usar o Assistente de Importação de Texto no Excel. Eu suponho que existe uma ferramenta semelhante no LibreOffice e no Openoffice.org.

No entanto, como os delimitadores são os sinais ; , quando você importa, será necessário organizar os dados, pois eles serão importados como uma linha de valores. Você pode alterar o arquivo de texto original e adicionar outro delimitador que signifique a próxima linha.

    
por 24.08.2013 / 18:03