Ir para conteúdo
Fórum Script Brasil
  • 0

Transpor dados de 1 coluna para Múltiplas linhas de outras Colunas


Bruno_2020

Pergunta

Olá a todos ! Gostaria de uma imensa ajuda!
Eu recebo um arquivo no qual ele não organiza os tipos de Pausa dos vendedores numa mesma coluna (e sim e várias colunas chamadas "Pausa"), além de também não organizar a "Quantidade" e "Tempo" dessa pausa numa coluna só. As informações são inseridas ao longo de uma linha e eu gostaria que eles fossem organizados por colunas. 

Vou colocar aqui  como é e como eu gostaria que fosse:

 

OPERADOR PAUSA QTD TEMPO PAUSA QTD TEMPO PAUSA QTD TEMPO PAUSA QTD TEMPO
Nome 1 BANHEIRO 0  00:00:00 ALMOÇO 0  00:00:00 LANCHE 0  00:00:00 AMBULATÓRIO 0  00:00:00
Nome 2 BANHEIRO 0  00:00:00 ALMOÇO 0  00:00:00 LANCHE 0  00:00:00 AMBULATÓRIO 0  00:00:00
Nome 3 BANHEIRO 0  00:00:00 ALMOÇO 0  00:00:00 LANCHE 0  00:00:00 AMBULATÓRIO 0  00:00:00
                         
                         

Gostaria que a informação viesse por colunas: "OPERADOR", "PAUSA", "QUANTIDADE" E "TEMPO", repetindo o nome do vendedor várias vezes na Coluna A, pra que as informações dele venham nas colunas seguintes, e não inseridas em linhas:

OPERADOR     PAUSA   QUANTIDADE TEMPO
Nome 1           BANHEIRO      0              00:00:00
Nome 1           ALMOÇO        0                00:00:00
Nome 1          LANCHE           0               00:00:00
Nome 1          AMBULATÓRIO  0              00:00:00
Nome 2         BANHEIRO        0                00:00:00
Nome 2         ALMOÇO          0                 00:00:00 ...

E assim por diante. 

O meu problema é que eu até consigo fazer a Coluna A me dar os vendedores ao transpor, mas quando faço isso na coluna B me vem tanto linhas de pausa, quanto quantidade e banheiro 😞

E como essa base sempre vem muitos vendedores e de forma variável, não sei como resolver isso ._.

Agradeço desde já aos que puderem me dar um help !

                       
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Em 16/10/2020 em 14:30, Bruno_2020 disse:

Olá a todos ! Gostaria de uma imensa ajuda!
Eu recebo um arquivo no qual ele não organiza os tipos de Pausa dos vendedores numa mesma coluna (e sim e várias colunas chamadas "Pausa"), além de também não organizar a "Quantidade" e "Tempo" dessa pausa numa coluna só. As informações são inseridas ao longo de uma linha e eu gostaria que eles fossem organizados por colunas. 

Vou colocar aqui  como é e como eu gostaria que fosse:

 

OPERADOR PAUSA QTD TEMPO PAUSA QTD TEMPO PAUSA QTD TEMPO PAUSA QTD TEMPO
Nome 1 BANHEIRO 0  00:00:00 ALMOÇO 0  00:00:00 LANCHE 0  00:00:00 AMBULATÓRIO 0  00:00:00
Nome 2 BANHEIRO 0  00:00:00 ALMOÇO 0  00:00:00 LANCHE 0  00:00:00 AMBULATÓRIO 0  00:00:00
Nome 3 BANHEIRO 0  00:00:00 ALMOÇO 0  00:00:00 LANCHE 0  00:00:00 AMBULATÓRIO 0  00:00:00
                         
                         

Gostaria que a informação viesse por colunas: "OPERADOR", "PAUSA", "QUANTIDADE" E "TEMPO", repetindo o nome do vendedor várias vezes na Coluna A, pra que as informações dele venham nas colunas seguintes, e não inseridas em linhas:

OPERADOR     PAUSA   QUANTIDADE TEMPO
Nome 1           BANHEIRO      0              00:00:00
Nome 1           ALMOÇO        0                00:00:00
Nome 1          LANCHE           0               00:00:00
Nome 1          AMBULATÓRIO  0              00:00:00
Nome 2         BANHEIRO        0                00:00:00
Nome 2         ALMOÇO          0                 00:00:00 ...

E assim por diante. 

O meu problema é que eu até consigo fazer a Coluna A me dar os vendedores ao transpor, mas quando faço isso na coluna B me vem tanto linhas de pausa, quanto quantidade e banheiro 😞

E como essa base sempre vem muitos vendedores e de forma variável, não sei como resolver isso ._.

Agradeço desde já aos que puderem me dar um help !

                       

boa noite !!!

Você precisará dessa macro que resolverá seus problemas

para que ela funcione, a celula A1 terá que estar a palavra operador, caso contrário, é so ajutar o range

segue a macro :

 

Sub SeparaPausa()
Dim W1              As Worksheet 'Declarando variável da primeira matriz
Dim W2              As Worksheet 'Declarando variável da segunda matriz
Dim iLinhaVendedor  As Integer   ' Variável que percorrerá as linhas dos vendedores
Dim iUltimaLinha    As Integer   ' Ultima linha da planilha destino
Dim bColunaMatriz   As Byte      ' varável que percorrerá as coluna da planilha destino
Dim bColunaCopia    As Byte      ' varável que percorrerá as colunas da cópia
'declarando as matrizes
    Set W1 = Planilha1  ' matriz de origem dos dados
    Set W2 = Planilha2  ' onde colocaremos os dados
    
' declarando variaveis
    iLinhaVendedor = 2  ' a varredura começara na linha 2 da planilha1( a linha 1 é o cabeçalho)
    iUltimaLinha = 2    ' a varredura começara na linha 2 da planilha2( a linha 1 é o cabeçalho)
' considerando que a planilha não seja zerada vamos localizar a última linha
    While W2.Cells(iUltimaLinha, "A") <> ""   'loop para a ultima linha da planilha2
        iUltimaLinha = iUltimaLinha + 1        'evitando loop eterno
    Wend
    
' a cada 4 colunas vamos incrementar 1 linha
    While W1.Cells(iLinhaVendedor, "A").Value <> "" ' loop para percorrer cada linha dos vendedores
        W2.Cells(iUltimaLinha, "A").Value = W1.Cells(iLinhaVendedor, "A").Value ' grava o nome do vendedor
        bColunaCopia = 2    'a copia começa na coluna B, na coluna A é o nome
        bColunaMatriz = 2   ' idem, a coluna A é o nome
        While W1.Cells(iLinhaVendedor, bColunaMatriz).Value <> ""  ' loop para percorrer a coluna dos vendores e achar a palavra pausa do cabeçalho)
            W2.Cells(iUltimaLinha, bColunaCopia).Value = W1.Cells(iLinhaVendedor, bColunaMatriz).Value 'copiando valor da planilha 1 para a planilha 3
            If bColunaCopia = 4 Then 'aqui está a questão a cada 4 colunas precisamos mudar de linha,
                bColunaCopia = 2 ' precisamos passar a coluna para B
                W2.Cells(iUltimaLinha, "A").Value = W1.Cells(iLinhaVendedor, "A").Value ' copiar o nome do vendedor na col A
                If bColunaMatriz < 13 Then ' precisamos verificar se está na ultima coluna da planilha1 para não gerar coluna em branco
                    iUltimaLinha = iUltimaLinha + 1 'incremento de linha
                End If
            Else
                bColunaCopia = bColunaCopia + 1 ' incremento de coluna da panilha 3
            End If
            bColunaMatriz = bColunaMatriz + 1 ' íncrementa a coluna da planilha1
        Wend
    iUltimaLinha = iUltimaLinha + 1     ' incrementa a linha de destino
    iLinhaVendedor = iLinhaVendedor + 1 ' incrementa a linha de vendedores (evita loop eterno)
    Wend


End Sub
 

 

Espero que ajude

qualquer dúvida estou a disposição

 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...