Notifications
Clear all

Macro para transformar Colunas em linhas de acordo com intervalo

6 Posts
3 Usuários
0 Reactions
2,309 Visualizações
(@diasbh)
Posts: 4
New Member
Topic starter
 

Boa tarde,

Estou a procura de uma macro para automatizar a opção de transpor colunas para linhas automaticamente,

agrupando as linhas tendo como referência os intervalos iguais encontrados na coluna POSIÇÃO.

No exemplo fiz manualmente como a opção copiar e transpor.

Este tópico foi modificado 3 anos atrás by diasbh
 
Postado : 07/08/2021 3:35 pm
Tags do Tópico
(@televisaos)
Posts: 49
Eminent Member
 

Boa tarde,

Sou leigo em tabela dinâmica mas ela não resolveria teu problema?

 

Att

 
Postado : 07/08/2021 5:12 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa tarde e bem vindo, @diasbh 

Poste um arquivo Excel. A imagem que vc mostrou até serve pra ilustrar o que vc pretende, mas se tivesse um arquivo Excel, outros usuários poderiam se interessar mais em tentar ajudar pois não teriam que digitar tudo do zero pra testar as fórmulas, ok?

 
Postado : 08/08/2021 1:58 pm
(@diasbh)
Posts: 4
New Member
Topic starter
 

@edsonbr  

Obrigado, postei o arquivo em Excel.

 
Postado : 09/08/2021 10:41 am
(@diasbh)
Posts: 4
New Member
Topic starter
 

Bom dia, também sou.

Dei uma olhada em exemplos de tabela dinâmica e só encontrei utilização para somatórios, talvez possa servir, mas ainda não descobri como.

 
Postado : 09/08/2021 10:45 am
(@televisaos)
Posts: 49
Eminent Member
 

Olá @diasbh ,

Veja se este código resolve seu problema:

 

Sub transpor_coluna()

Dim ultimalinha As Integer
Dim primeiracoluna As Integer
Dim ultimacoluna As Integer
Dim linpos As Integer
Dim colpos As Integer
Dim aux As Integer

ultimalinha = Cells.Find(What:="POSIÇÃO", LookAt:=xlWhole).End(xlDown).Row
primeiracoluna = Cells.Find(What:="POSIÇÃO", LookAt:=xlWhole).End(xlToLeft).Column
ultimacoluna = Cells.Find(What:="POSIÇÃO", LookAt:=xlWhole).End(xlToRight).Column
linpos = Cells.Find(What:="POSIÇÃO", LookAt:=xlWhole).Row
colpos = Cells.Find(What:="POSIÇÃO", LookAt:=xlWhole).Column
aux = linpos + 1

For linha = linpos + 1 To ultimalinha
    If Cells(linha + 1, colpos) <> Cells(linha, colpos) Then
        Range(Cells(aux, primeiracoluna), Cells(linha, ultimacoluna)).Copy
        Cells(aux, ultimacoluna).Offset(0, 2).PasteSpecial Transpose:=True
        aux = linha + 1
    End If
Next linha

End Sub
 
Postado : 20/08/2021 6:44 pm