Página 1 de 1
Transpor com condições
Enviado: 15 Mar 2016 às 13:31
por Franjps
Olá.
Gostaria de saber se é possível transpor uma tabela de linhas para colunas com certas condições.
Condições:
-respeitar a ordem da linha, da esquerda para a direita;
-respeitar a coluna para qual a linha irá Ex.: Na coluna X, apenas os números(x;y;z;etc);
-sendo possível inserir novos números nessa tabela e automaticamente transpor para as colunas indicadas;
Re: Transpor com condições
Enviado: 15 Mar 2016 às 13:46
por alexandrevba
Transpor com condições
Enviado: 15 Mar 2016 às 14:51
por Franjps
Olá alexandrevba
A resposta que você deu no outro fórum, não foi o que eu procurava.
E o arquivo que você deixou para download está dando erro quando acionado o botão LOTTO.
Alguém poderia me ajudar com essa dúvida, mas sem usar VBA?
Re: Transpor com condições
Enviado: 15 Mar 2016 às 17:05
por alexandrevba
Boa tarde!!
Você abandonou seu tópico, se não foi o que esperava porque não respondeu.
Eu baixei o arquivo do minha ultima postagem (se é que vc viu minha ultima postagem), está rodando normal.
dentro do arquivo continha uma das suas solicitações que de forma presumida, resolvia o tópico.
Dentro arquivo tem as rotinas.
Código: Selecionar todosSub AleVBA_17808V3()
Dim InputRange As Range
Dim OutputCell As Range
Application.ScreenUpdating = False
Set InputRange = Sheets("Plan1").Range("H15:L23")
Set OutputCell = Sheets("Plan1").Range("AG2")
ActiveSheet.Range("AG:AI").ClearContents
[AG1].Value = "AleVBA"
For Each cll In InputRange
OutputCell.Value = cll.Value
Set OutputCell = OutputCell.Offset(1, 0)
Next
ActiveSheet.[AG1].CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
With ActiveSheet
[AH1].Value = "AleVBA2"
[AI1].Value = "AleVBA3"
[AJ1].Value = "AleVBA4"
.Range("AH2").Formula = "=MOD(ROWS(N$2:N2)-1,5)+1"
.Range("AH2").AutoFill .Range("AH2:AH50")
.Range("AI2").Formula = "=ROUNDUP(ROW($A1)/5,0)"
.Range("AI2").AutoFill .Range("AI2:AI50")
.Range("AJ2").Formula = "=IF(AG2="""","""",VLOOKUP(AG2,D:E,2,0))"
.Range("AJ2").AutoFill .Range("AJ2:AJ50")
.Range("AG1:AJ50").Value = .Range("AG1:AJ50").Value
End With
Call PartII
Call PartIII
ActiveSheet.Range("AG:AJ").ClearContents
Columns("Q:Ae").HorizontalAlignment = xlCenter
Application.ScreenUpdating = True
End Sub
Código: Selecionar todosSub PartII()
Columns("AG:AJ").Select
ActiveWorkbook.Worksheets("Plan1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Plan1").Sort.SortFields.Add Key:=Range("AJ2:AJ82") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Plan1").Sort.SortFields.Add Key:=Range("AH2:AH82") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Plan1").Sort
.SetRange Range("AG1:AJ82")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Código: Selecionar todosSub PartIII()
Dim i As Long
For lContLinha = 2 To Range("AJ" & Rows.Count).End(3).Row
If Cells(lContLinha, "AJ") = "0 a 10" Then
Cells(lContLinha, "AG").Copy Cells(lContLinha, "Q").Offset(13, 0)
ElseIf Cells(lContLinha, "AJ") = "11 a 20" Then
Cells(lContLinha, "AG").Copy Cells(lContLinha, "S").Offset(10, 0)
ElseIf Cells(lContLinha, "AJ") = "21 a 30" Then
Cells(lContLinha, "AG").Copy Cells(lContLinha, "U").Offset(8, 0)
ElseIf Cells(lContLinha, "AJ") = "31 a 40" Then
Cells(lContLinha, "AG").Copy Cells(lContLinha, "W").Offset(6, 0)
ElseIf Cells(lContLinha, "AJ") = "41 a 50" Then
Cells(lContLinha, "AG").Copy Cells(lContLinha, "Y").Offset(3, 0)
ElseIf Cells(lContLinha, "AJ") = "51 a 60" Then
Cells(lContLinha, "AG").Copy Cells(lContLinha, "AA").Offset(-1, 0)
ElseIf Cells(lContLinha, "AJ") = "61 a 70" Then
Cells(lContLinha, "AG").Copy Cells(lContLinha, "AC").Offset(-3, 0)
ElseIf Cells(lContLinha, "AJ") = "71 a 80" Then
Cells(lContLinha, "AG").Copy Cells(lContLinha, "AE").Offset(-5, 0)
End If
Next lContLinha
End Sub
Att
Re: Transpor com condições
Enviado: 15 Mar 2016 às 18:54
por Franjps
Olá.
Como vc pode notar nos exemplos que tirei print, a sua solução não obedece a ordem que pedi para as colunas. Observe as setas verdes. Ordem: da esquerda para a direita, e de cima para baixo. Observe as setas vermelhas, amarela e azul indicam as colunas, mas não obedece a ordem que pedi.
Mandei um arquivo indicando com setas e desenhos exemplificando como vc pediu (não sei se vc viu) no "tópico abandonado".
Abandonei de certa forma o tópico, pois em determinada parte do tópico, tive que esperar 4 dias pela sua resposta, pensando assim que não era de seu interesse resolver mais meu problema.
O segundo print é o erro que encontro quando clico no botão LOTTO.
Ps.: Do jeito que vejo esse arquivo, não sei em que parte posso mexer nele sem que haja prejuízo para a fórmula, pois como explico no tópico, irei inserir novos números na tabela.

Re: Transpor com condições
Enviado: 16 Mar 2016 às 22:45
por AndersonLeal
Olá,
Sua planilha está pronta. Dê uma olhada e veja se é isto que precisa. Os dados da TABELA A podem ser inseridos até a linha 28. Se quiser aumentar esse limite me avise.
Se ainda não estiver funcionando como você quer, poste novamente sua dúvida aqui no fórum e veremos se podemos ajudar.
Para executar a macro, clique no retângulo azul "Transpor Valores".
Abraço.
Transpor com condições
Enviado: 17 Mar 2016 às 10:43
por Franjps
Olá AndersonLeal, obrigado por responder e ficou ótima a TABELA!
Porém, preciso de algumas coisas dentro dessa tabela e não sei se é possível:
-a medida que inserir novos números na TABELA A, automaticamente entre nas colunas correspondentes;
- ou a medida que inserir novos dados, apertando o botão, acrescente apenas esses novos dados que foi inserido;
-preciso de um tamanho infinito para inserir novos dados na TABELA A pois os dados irão além de 28 linhas (mais de 3000 por exemplo);
Re: Transpor com condições
Enviado: 17 Mar 2016 às 14:44
por AndersonLeal
Olá,
Fico feliz que tenha gostado da planilha!
As alterações estão prontas, agora pode inserir quantos dados quiser na TABELA A, o limite é a quantidade de linhas do seu Excel;
A medida que inserir novos dados, e apertar o botão, somente esses novos dados serão inseridos nas colunas. Isso poupa tempo caso já tenha inserido uma quantidade muito grande de linhas na TABELA A.
Qualquer dúvida é só escrever!
Abraço.
Transpor com condições
Enviado: 17 Mar 2016 às 18:14
por Franjps
Poxa AndersonLeal, é exatamente isso que eu queria! Perfeito!
Só vou te pedir mais uma coisinha. Acho que a partir daí não tem mais o que mexer. Hehehe
Por exemplo, se eu apago 1, 2, 3 ou mais linhas na TABELA A (ex.: quando digitar algo errado), e aperto o botão de Transpor Valores, a tabela de colunas não recarrega.
Gostaria que a tabela de colunas recarregasse apertando o botão Transpor Valores caso isso aconteça.
Se acrescentar mais isso a Tabela estará perfeita pra mim.
Obrigado mais uma vez!

Transpor com condições
Enviado: 17 Mar 2016 às 19:03
por AndersonLeal
Veja se compreendi bem a sua dúvida: supondo que você apague a linha da TABELA A que contém os números 1, 2, 3, 4, 5 e 6, você quer que esses números (1, 2, 3, 4, 5 e 6) sejam apagados das colunas?
Abraço.
Transpor com condições
Enviado: 17 Mar 2016 às 19:55
por Franjps
Opa
Exemplo:
Se eu apagar uma linha ou mais linhas da TABELA A, os números que estiverem nessa(s) linha(s) sejam apagados na coluna quando apertar o botão de Transpor novamente.
Ps: Estava tentando aplicar formatação condicional nas colunas e ao apertar o botão Transpor a planilha trava.
Tentava aplicar uma formatação condicional com essa fórmula: =DIREITA(O1:Y1;1)*1=1
Em relação a formatação condicional ainda, estava usando 9 fórmulas iguais a que mostrei, mas com final: 2, 3, 4, etc...
Segue Print:
Apertando o botão depurar:

Transpor com condições
Enviado: 17 Mar 2016 às 21:16
por AndersonLeal
Vamos lá:
O erro dos prints acima está ocorrendo pois você inseriu os valores 10, 20, 30, 40, 50 e 60 como texto, e o código realiza cálculos como eles, e não é possível calcular com texto, somente com números.
Você tem duas opções para resolver isso:
1ª - Insira os dados como números ou
2ª - Mude o formato do número para que apareça com as aspas, assim: "10", "20" etc.
A formatação condicional que você citou não entendi nada rsrsrsrs
Apagar das colunas os dados apagados da TABELA A é complicado, até pensei numa maneira, mas toda vez que clicar no botão Transpor todos os dados da TABELA A seriam lançados novamente nas colunas, e supondo que você tenha 2000 linhas para preencher as colunas e apague 2 dessas linhas, o tempo gasto seria grande.
Não sei se entendeu, mas não sei como identificar nas colunas quais números foram apagados na TABELA A.
Abraço.
Transpor com condições
Enviado: 17 Mar 2016 às 21:18
por AndersonLeal
Vou mandar uma planilha para facilitar seu entendimento.
Re: Transpor com condições
Enviado: 17 Mar 2016 às 21:41
por AndersonLeal
Dê uma olhada na planilha que estou enviando.
Abraço.
Transpor com condições
Enviado: 17 Mar 2016 às 22:13
por Franjps
Oi
Então, na verdade, as linhas a serem apagadas, nunca seriam aleatórias, mas sim as últimas inseridas, por conta de inserir valores errados por exemplo.
No caso, o que poderia acontecer seria apagar por exemplo as ultimas 3 linhas inseridas.
Nunca apagaria uma linha no meio da TABELA A. Sempre seriam as ultimas.
Transpor com condições
Enviado: 18 Mar 2016 às 14:42
por AndersonLeal
Olá,
Então isso facilita um pouco. Vou ver o que posso fazer. Em breve entro em contato novamente.
Abraço.
Re: Transpor com condições
Enviado: 18 Mar 2016 às 16:15
por AndersonLeal
Olá Franjps,
Veja agora como ficou. Para excluir uma linha da TABELA A marque um "x" ao lado da linha, na coluna EXCLUIR e clique no botão "Limpar Valores".
Como você disse, somente será possível limpar os valores a partir da última linha da TABELA A. Assim, pode-se limpar:
a última linha;
a última e a penúltima linhas;
a última, a penúltima e a antepenúltima linhas e assim por diante.
Abraço.
Transpor com condições
Enviado: 18 Mar 2016 às 23:21
por Franjps
AndersonLeal, muito obrigado pelo seu esforço.
A Tabela ficou ótima.
Espero não ter dado muito trabalho. Hehehe
Sucesso e paz amigo!