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
Boa tarde!!

Já foi respondido em
http://www.planilhando.com.br/forum/vie ... 7&start=10


Att

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 todos
Sub 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 todos
Sub 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 todos
Sub 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.

Imagem

Imagem

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! :P
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!

:mrgreen:

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:

Imagem

Apertando o botão depurar:

Imagem

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. :D

Espero não ter dado muito trabalho. Hehehe

Sucesso e paz amigo!