EXCEL - Realocando dados entre cells

Anônima
2009-10-08T18:49:58+00:00

Pessoal o desafio é o seguinte:

Tenho uma planilha e o que preciso é basicamente uma forma mais ágil de mover dados entre celulas.

Este é o exemplo de como está minha planilha

Como nesse caso alguns protocolos possuem mais de 1 registro em sua linha na coluna registro e por isso que preciso deixa-los dessa forma:

Fazendo com que cada sequência de 9 dígitos do registro passe para uma nova linha e repetir isto para todos os protocolos onde o número de registros forem maior que um.

Descobri que dá pra resgatar os valores combinando o uso das formulas: ESQUERDA(B2;9) ; =EXT.TEXTO(B2;11;9) ; =DIREITA(B2;9) e também que =NÚM.CARACT(B2) pode ser usado p/ contar a quantidade de caracteres em uma celula mas não faço a mínima idéia de como automatizar a criação das linhas quando for necessário e como realocar os dados obtidos com =EXT.TEXTO nas novas células das linhas criadas...

Agradeço qualquer informação que puderem compartilhar preciso encontrar algum método mais prático do que ctrl+c e ctrl+v pq são quase 30 mil registros!

Valeu galera.


Kennedy S. S. Carvalho

Microsoft 365 e Office | Instalar, resgatar, ativar | Para uso doméstico | Outro

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2009-10-08T21:29:49+00:00

Olá Kennedy, fiz uma solução em VBA.

você terá que colocar dentro da Plan1. Para isso terá que Segurar o <Alt> e Apertar 1 vez o <F11>

Do lado esquerdo terá uma janela com o seu projeto.  Dê duplo click na sua aba e coloque o código abaixo. É interessante caso tenha que utilizar sempre esta Macro a criação de um Botão.

Sub protocolo()

nL = 1 'Variável de Controle para a Impressão dos novos registros

For L = 2 To Range("A65000").End(xlUp).Row ' varre todas as linhas

    myprotocolo = Cells(L, 1) ' pega o protocolo

    Registros = Range("B" & L) ' pega os valores dos registros

    MyRegs = Split(Registros, " ") ' separa em array os registros

    For x = 0 To UBound(MyRegs) ' varre todos os registros

        Cells(nL, 4) = myprotocolo

        Cells(nL, 5) = MyRegs(x)

        nL = nL + 1

    Next

Next

End Sub

Qualquer dúvida só mandar um email para: EMAIL REMOVED

Esta resposta foi útil?

0 comentários Sem comentários

2 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2009-10-27T22:38:17+00:00

    De nada. Eu gosto muito de fazer Macros, elas me salvam diariamente. Anote ai meu Email caso precise de alguma ajuda. *** O endereço de email foi removido para fins de privacidade ***

    Forte Abraço.

    Renato Lacerda

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2009-10-10T00:31:44+00:00

    Amigo não tenho nem como agradecer seu script rodou redondinho e já tá tudo pronto eu já tinha feito a mão até quase 2000 e teria um trabalho enorme pela frente se sua solução não aparecesse. Muito obrigado...

    O seu e-mail foi removido e eu tbm não quis perturbar então levei um tempinho até conseguir uma coisa bem óbvia, ativar o macro mas agora está perfeito inclusive segui sua recomendação e deixei pronto tbm uma tecla de atalho pra rodar ele.

    Bom feriado.

    Vlw

    @kndrio


    Kennedy S. S. Carvalho

    Esta resposta foi útil?

    0 comentários Sem comentários