Converta uma coluna em várias linhas

2

Eu simplesmente quero pegar os dados da coluna A e colocá-los na coluna B, linha 1; Coluna C, linha 1 e Coluna D, linha 1.

Eu quero colocá-lo em grupos de três de cima para baixo.

Por exemplo:

Column A
1
2
3
4
5
1
1
2
3

Eu quero que pareça com isso

1 2 3
4 5 1 
1 2 3

e continue em frente.

    
por paul 21.11.2011 / 02:27

3 respostas

3

Você pode usar uma fórmula para conseguir isso.

=INDIRECT(ADDRESS((ROW($A1)-1)*3+COLUMN(A1),1))

Insira a fórmula acima em uma célula em branco. Copie 2 células para a direita e depois para baixo até começar a obter zeros (exclua estes).

Nesta fórmula, A1 aponta para o primeiro item da coluna que você quer reorganizar. Para alterar o número de colunas, modifique 3 na fórmula para outra coisa.

    
por 18.03.2013 / 12:55
1

Aqui está uma maneira de fazer isso no VBA (supondo que os dados estejam na coluna A ):

Option Explicit

Sub movetocolumns()
Dim i As Integer, iRow As Integer
Dim arrSource As Variant

'Set the first row
iRow = 1

With ActiveWorkbook.Worksheets("Sheet1")
    'get the data into an array from the first column
    arrSource = Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))

    'parse every value of the array and add the data to the next column
    For i = 1 To (UBound(arrSource) - UBound(arrSource) Mod 3) Step 3
        .Cells(iRow, 2) = arrSource(i, 1)
        .Cells(iRow, 3) = arrSource(i + 1, 1)
        .Cells(iRow, 4) = arrSource(i + 2, 1)
        iRow = iRow + 1
    Next i
    'add the remaining values
    Select Case UBound(arrSource) Mod 3
        Case 1  'one item to add
            .Cells(iRow, 2) = arrSource(i, 1)
        Case 2  'still two items to add
            .Cells(iRow, 2) = arrSource(i, 1)
            .Cells(iRow, 3) = arrSource(i + 1, 1)
        Case Else   'nothing to add
    End Select
End With
End Sub
    
por 21.11.2011 / 09:09
0

Não é exatamente bonito, mas consegui fazer isso com 3 colunas auxiliares e uma tabela dinâmica, conforme mostrado abaixo.

    
por 28.11.2011 / 21:58