Jump to content
Fórum Script Brasil
  • 0

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


Question

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 to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148883
    • Total Posts
      644936
×
×
  • Create New...