O Excel transpõe e organiza

2

Eu tenho um monte de linhas, que quero transformar em uma tabela.

Existe uma maneira no Excel de converter várias entradas, cada uma ocupando quatro linhas em uma tabela, onde cada uma das quatro linhas é colocada em uma das quatro colunas?

Basicamente isso:

a
b
c
d

a
b
c
d

para

 a b c d
 a b c d
    
por Daniel 24.02.2010 / 20:49

4 respostas

4

Eu não sei o topo da minha cabeça sabe uma maneira de fazer isso para todos eles, mas você pode colar assim ...

  • selecione um conjunto de abcd
  • copie as células
  • editar - > colar especial
  • [x] o botão de transposição na parte inferior

Isso será feito para esse conjunto de a / b / c / d. Eu sei que não é uma resposta completa, mas se não houver muitos deles, então isso pode funcionar.

Aqui está uma macro rápida que fará a transposição para você, se quiser. Basta colocar tudo na coluna "A" e colocar tudo em B1, C1, D1, etc. As linhas são delineadas por espaços e dois espaços seguidos significam "stop".

corrigido, deve funcionar bem para até 255 colunas agora. e sim, você pode usar a configuração Transpose na função pastespecial em vba, mas isso apenas torna o código mais complicado para o mesmo resultado, então eu mantive isso simples

Sub Macro1()
    lastBlank = False
    col = 2 'B
    row = 1
    For Each cell In Range("A:A")
        v = Trim(CStr(cell))
        If v = "" Then
            If lastBlank = True Then Exit For
            lastBlank = True
            col = 2 'B
            row = row + 1
        Else
            Cells(row, col) = v
            col = col + 1
            lastBlank = False
        End If
    Next
End Sub
  • Ferramentas- > Macros- > Editor do Visual Basic
  • [menu] Inserir - > Módulo
  • Cole a macro em (deve estar em 'Module1')
  • Executar (seta verde). Ou ... fechar e ferramentas- > macro- > macros- > [executar]
por 24.02.2010 / 20:56
1

Se alguém ainda estiver lendo este artigo do blog, aqui está outra maneira de fazê-lo (basta definir em qual linha o primeiro dado está usando a constante FirstRow e depois soltá-la) ...

Sub TransposeRowsFourAtATime()  
  Dim X As Long, LastRow As Long, OffSetCounter As Long  
  Const FirstRow As Long = 2  
  LastRow = Cells(Rows.Count, "A").End(xlUp).Row  
  For X = FirstRow To LastRow Step 5  
    Cells(FirstRow, "A").Offset(OffSetCounter).Resize(1, 4) = _  
       WorksheetFunction.Transpose(Cells(X, "A").Resize(4))  
  OffSetCounter = OffSetCounter + 1  
  Next  
  Range(Cells(FirstRow + OffSetCounter, "A"), Cells(LastRow, "A")).Clear  
End Sub  

Rick Rothstein (MVP - Excel)

    
por 22.08.2010 / 20:16
0

Existe uma função de transposição do Excel. Digite a função na célula onde deseja que a transposição comece, depois use as funções edit & fill para copiar as funções para os lados (e para baixo, se necessário).

Deve haver uma maneira de corrigir a indexação de linha (para considerar espaços em branco) usando a função ADDRESS .

    
por 24.02.2010 / 21:20
0

Você pode inserir essas fórmulas (supondo que seus dados iniciem em A1) e preencher o que você precisa

B1            =IF(ISBLANK(A5),A1,"")
C1            =IF(ISBLANK(A5),A2,"")
D1            =IF(ISBLANK(A5),A3,"")
E1            =IF(ISBLANK(A5),A4,"")

Copie e cole valores especiais. Em seguida, classifique para remover as linhas em branco.

    
por 25.02.2010 / 16:09