Como transformar o CSV em linhas e não em colunas

0

Eu tenho um arquivo com referências exclusivas na coluna A (por exemplo, nomes de empresa) e um ou mais valores retornados relacionados a esse valor exclusivo na coluna B (por exemplo, contas). Estes são separados por vírgulas, algumas empresas têm apenas uma conta, algumas têm muitas. Usando 'texto para colunas', eu obtenho todos os números de contas em colunas separadas na mesma linha que o nome da empresa.

O que eu gostaria de fazer é obter cada número de conta em uma nova linha, cada um com o nome da empresa correspondente, para que eu tenha uma planilha com apenas duas colunas e pesquisável no nível da conta individual, consultando a empresa correta . Isso é possível?

    
por Jonnie B 09.11.2015 / 17:42

2 respostas

0

Você pode usar fórmulas do Excel para "manualmente" delimitar seus dados. Se você usar essa fórmula, encontrará a primeira ocorrência de uma vírgula e, em seguida, ajustará a ocorrência:

=IF(A1="","",IFERROR(MID(A1,1,FIND(",",A1)-1),A1))

Na célula em que temos nossos dados iniciais (no nosso caso A1 são nossos dados iniciais), precisamos indexar os dados para não incluir o que acabamos de remover:

=MID(A1,LEN(B1)+2,LEN(A1))

Aqui está tudo funcionando em conjunto:

    
por 09.11.2015 / 17:56
0

@Jonnie, Se você usasse TextToColumns para distribuir os números de conta em várias colunas. Em seguida, vá ao menu 'Screen' e clique no ícone acima da Macro à direita. Digite um nome para a macro e clique em "criar". Em seguida, cole o código abaixo entre as duas linhas com sub. Feche a janela do VBA para retornar aos seus dados. Clique em qualquer lugar nos dados. Clique no ícone da Macro novamente, escolha seu macroname e clique em Executar.

Dim data As Range
Dim i As Integer
Dim j As Integer

Set data = ActiveCell.CurrentRegion 'Selecting the active region

For i = data.Rows.Count To 1 Step -1 'for all row (start at bottom)
    For j = 3 To data.Columns.Count 'for all columns (start at third column)
        If Not IsEmpty(data(i, j)) Then 'if there is a value
            data.Rows(i + 1).Insert 'insert a new row below
            data(i + 1, 1) = data(i, 1) 'copy the company
            data(i + 1, 2) = data(i, j) 'copy the account number
            data(i, j).Clear 'delete the original value
        End If
    Next j
Next i

Isso deve resultar em uma lista de

company A; accno 1
company A; accno 2
company B; accno 3
company C; accno 4
    
por 10.11.2015 / 13:31