Como faço para transpor dados em colunas para linhas?

2

Como faço para transpor dados em colunas para linhas?

Se os dados forem:

Joe  
some city  
some state  
Bob  
no city  
no state  

e eu uso Colar especial » Transpose , recebo

Joe some city some state Bob no city no state  

O que eu quero é:

Joe some city some state  
Bob no city no state  

Eu não sei o VBA.

    
por J. McLain 08.03.2012 / 03:19

3 respostas

1

Nós vamos aprender um pouco de VBA esta manhã e você vai se sentir bem com isso! Coloque suas botas de foguete e prepare-se para navegar!

Esta macro fará isso por você se estiver na coluna A

Pressione Alt + F11 para abrir o editor do VBA. Clique com o botão direito em insert - module . Cole o código abaixo no módulo e vá em debug - compile project e pressione F5 para executá-lo. Brisa fácil.

Sub transposedelete()

Dim rownum As Long
Dim colnum As Long
Dim data, result
colnum = 1

Application.ScreenUpdating = False

'check if the data on the sheet start where the code expects it
If Range("a1") = "" Then Exit Sub


    ' define data range
    With Range("a1", Cells(Rows.Count, "a").End(xlUp)).Resize(, 2)
    data = .Value
    numrows = UBound(data)

    'loop it
    For rownum = 2 To numrows

    Range((Cells(rownum, colnum)), (Cells(rownum + 1, colnum))).Copy
    ' transpose
    Cells(rownum - 1, colnum + 1).Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

    'delete rows (this could be cleaner)
    Rows(rownum).Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Rows(rownum).Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp


    Next

    End With

    Application.ScreenUpdating = True

End Sub

Fácil como 1, 2, 3:

1.

2.
3.

Veja agora que não foi difícil ou intimidante, foi? E agora você tem um truque na manga! Aprender é muito divertido!

    
por 08.03.2012 / 12:30
0

update: O Excel 2007 e posterior, na verdade, têm um recurso de uma coluna para várias linhas. Leia sobre isso aqui . Pelo motivo de o recurso de transposição não estar fazendo o que você deseja, veja abaixo:

Para que a transposição funcione da maneira que você deseja, os dados originais precisariam ser organizados assim:

Joe        Bob
city1      city2
state1     state2

A transposição altera linhas para colunas e vice-versa. A maneira como suas informações são formatadas no seu exemplo, é uma coluna longa e o Excel as altera para uma linha longa. Não tem como saber que você quer tratar sua coluna com seis itens como dois blocos de três itens cada.

    
por 08.03.2012 / 04:15
0

Esta resposta usa os dados de Como converter dados de formato de linha em formato de coluna? , que foi fechado como uma duplicata desta questão. Então, essa resposta faz responder a essa pergunta, com modificações triviais (ou seja, ignore as partes dessa resposta que falam sobre rótulos de dados.

Primeiro de tudo, suponho que seus dados são o que você aparece :

Criarumanovaplanilhaeinsiratítulosdecolunaquecorrespondemaosseustrêsrótulosdedados:

(Você pode fazer isso copiando as células A1:A3 de Sheet1 e transpondo-as, mas, para apenas três, é provavelmente mais fácil apenas digitá-los manualmente. Agora, note que toda vez que você move uma célula (ou seja, uma coluna) para a direita em Sheet2 , que corresponde a descer uma linha em Sheet1 . E toda vez que você move uma linha para baixo em Sheet2 , que corresponde a descer três linhas em Sheet1 . Então, acho que =ROW()*3 + COLUMN() pode ser uma fórmula útil, e insira isso nas células A2:C4 :

Observequeosvaloresprogridemdamaneiraquequeremos.MasqueremosqueSheet2!A2obtenhaseuvaloremSheet1!A1,entãovamossubtrair7eusaroresultadocomoumdeslocamento.Digite

=OFFSET(Sheet1!$A$1,ROW()*3+COLUMN()-7,0)

nascélulasA2:C4:

quais são os dados que você deseja, mas com os rótulos de dados ainda anexados. Então, para corrigir isso, mude a fórmula para

=SUBSTITUTE(OFFSET(Sheet1!$A$1, ROW()*3+COLUMN()-7, 0), A$1 & ": ", "")

para remover o rótulo (da linha 1 da coluna atual) dos dados da célula:

e, em seguida, você pode copiar e colar valores.

    
por 12.08.2015 / 11:13