Como Transpor no Excel uma coluna com mais de 50.000 linhas?

0

Eu estou tentando transpor toda a coluna "B", mas quero pular uma linha, então pegue os próximos 4 e cole-os na mesma coluna. Como posso fazer este loop toda a coluna "B" pulando todas as 5 linhas e mudar o intervalo para a próxima célula aberta ou "Range" automaticamente sem digitar manualmente cada um deles individualmente?

Range("B12:B16").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Range("B18:B22").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A3").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Range("B24:B28").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A4").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    
por user38950 02.06.2010 / 18:15

2 respostas

1

Você poderia nomear suas células na coluna da Planilha1 como 'dados' e fazer o seguinte na Planilha2 ...

     A        B                    C                    D                    E
1    0        =INDEX(data,$A1+1)   =INDEX(data,$A1+2)   =INDEX(data,$A1+3)  =INDEX(data,$A1+4)
2    =A1+5    =INDEX(data,$A2+1)   =INDEX(data,$A2+2)   =INDEX(data,$A2+3)   =INDEX(data,$A2+4)
3    =A2+5    =INDEX(data,$A3+1)   =INDEX(data,$A3+2)   =INDEX(data,$A3+3)   =INDEX(data,$A3+4)
4    ...

e, em seguida, preencha automaticamente quantas linhas forem necessárias.

    
por 03.06.2010 / 01:13
0

Tente o seguinte, que acabei de criar, ou seja, se você estiver atrás de uma versão de macro em vez da fórmula já sugerida.

Basicamente, eu acho que deveria fazer o que seu código estático faz, mas dentro de um loop - então não há trabalho manual de copiar e colar para fazer. Pode engasgar se a coluna inteira estiver cheia (ela morrerá quando tentar selecionar após a última linha).

Pode ser necessário alterar os locais de início e de colagem (próximo ao topo) para atender aos seus requisitos específicos. No momento, ele copia da coluna B para as colunas C-F.

Dim CopyCell As Range
Dim PasteCell As Range

'starting location (ie, top of the list to copy)
Range("B1").Select

'pasting location (ie, top-left cell to start pasting to)
Set PasteCell = Range("C1")

Do While ActiveCell.Value <> 0
    'copy the items in the next four rows
    Set CopyCell = ActiveCell.Range("A1")
    ActiveCell.Range("A1:A4").Select
    Selection.Copy

    'move to paste location
    PasteCell.Select

    'paste with transpose
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=True

    'adjust paste location for next paste
    Set PasteCell = PasteCell.Offset(1, 0)

    'return to last copied location and and move down five steps
    'copying 4 rows but moving 5 is how every 5th row is missed
    CopyCell.Select
    ActiveCell.Offset(5, 0).Select
Loop
    
por 07.06.2010 / 18:56