Converte várias linhas em uma única coluna com base nos valores

1

Eu tenho uma planilha do excel como

A 1 2 3 4
B 1 2
C 1 2 3 4 5 

Eu preciso que a saída seja vista como

A 1
A 2
A 3
A 4
B 1
B 2
C 1
C 2
C 3
C 4
C 5

Ficarei muito grato se alguém ajudar a encontrar uma solução para isso

    
por Arusan 27.07.2012 / 14:09

1 resposta

2

Você precisará conseguir isso com o código VBA.

Supondo que a folha de entrada é chamada de "entrada" e sua folha de saída é chamada de "saída" e que a entrada inicia uma célula A1 sem cabeçalhos, o código a seguir funcionará:

Sub MakeOutput()

    Dim iInputRow As Long
    Dim iInputColumn As Long
    Dim iOutputRow As Long

    iOutputRow = 1 '- counter for which row to paste to
    '- loop through each row on the input sheet
    For iInputRow = 1 To Sheets("Input").Range("A" & Sheets("Input").Rows.Count).End(xlUp).Row
        '- loop through each column inside of each row
        For iInputColumn = 2 To Sheets("Input").Cells(iInputRow, 1).End(xlToRight).Column
            Sheets("Output").Range("A" & iOutputRow).Value = Sheets("Input").Range("A" & iInputRow).Value
            Sheets("Output").Range("B" & iOutputRow).Value = Sheets("Input").Cells(iInputRow, iInputColumn).Value
            iOutputRow = iOutputRow + 1
        Next iInputColumn
    Next iInputRow

End Sub

O que isto faz é percorrer todas as linhas se os dados de entrada começarem em A1 até a última célula em A que tenha dados.

Em seguida, em cada linha, ele percorre todas as colunas preenchidas.

Para cada uma destas colunas de dados na sua folha de entrada, copia os valores desse par para a folha de saída.

    
por 27.07.2012 / 15:51