Maneira fácil de colocar várias colunas no Excel em suas próprias linhas?

2

Eu tenho uma planilha com esta aparência:

   A   |   B   |   C   |   D   |   E   |
----------------------------------------
     62| Value1| Value2|       |       |
    345| Value3| Value4| Value5| Value6|
     17| Value7|       |       |       |
    111| Value8| Value9| ValueA|       |

Eu gostaria de transformá-lo para isso:

   A   |   B   |
----------------
     62| Value1|
     62| Value2|
    345| Value3|
    345| Value4|
    345| Value5|
    345| Value6|
     17| Value7|
    111| Value8|
    111| Value9|
    111| ValueA|

Isso parece um procedimento bastante comum (estou normalizando uma tabela) em que o Excel teria esse enlatado. Existe uma maneira fácil de fazer isso, ou é preciso escrever uma macro ou VBA?

    
por JW. 22.03.2013 / 23:20

1 resposta

2

O Excel tem uma função Transpor incorporada que alterna linhas e colunas, mas isso não funciona para o seu cenário. O único que acho que funcionará é uma função VBA. Meu VB é um pouco enferrujado, mas este deve funcionar. Você precisará modificar o intervalo "A1: E5" para cobrir as células que deseja transformar. E isso copia os valores da primeira planilha chamada "Sheet1" para o segundo chamado "Sheet2". Se você tiver dados na Planilha2 ou tiver planilhas nomeadas diferentes, precisará modificar o código.

Sub Transform()

Dim rowStr As String
Dim rowIndex As Integer

rowIndex = 1

For Each Cell In Sheet1.Range("A1:E5")
    If Cell.Column = 1 Then
        rowStr = Cell.Value
    ElseIf Not IsEmpty(Cell.Value) Then
        Sheet2.Cells(rowIndex, 1) = rowStr
        Sheet2.Cells(rowIndex, 2) = Cell.Value
        rowIndex = rowIndex + 1
    End If
Next Cell

End Sub
    
por 23.03.2013 / 02:02