Ir ao conteúdo
  • Cadastre-se

Excel Macro para mover dados entre células


Posts recomendados

Boa tarde.

 

Tenho uma planilha com 11k+ linhas.

 

Esses dados foram extraídos de um software onde o usuário pode preencher os campos com muita liberdade, portanto, ao gerar o CSV e posteriormente importa-lo no Excel, houveram algumas quebras em um determinado campo que estão me forçando a retrabalhar os dados manualmente na base do CTRL+C e CTRL+V.

 

Exemplo da situação e como estou "resolvendo" manualmente:

a- Identifiquei que na célula A10 há o conteúdo de uma quebra da linha anterior;

b- Edito a célula teclando F2, seleciono o seu conteúdo e copio para a memória, via CTRL+C;

c- Desloco o cursor para a célula G9, que contém o início da célula que foi quebrada, edito ela com o F2 novamente, quebro a linha com um ALT+ENTER e colo o conteúdo da memória;

d- Depois disso desloco o cursor para a célula B10 e seleciono continuamente até a célula X10, copio esse conteúdo para a memória via CTRL+C;

e- Desloco o cursor para a célula H9 e colo as células copiadas através do CTRL+V, pois esse seria o final da formação das colunas originais da tabela.

f- Checo os dados e se tudo está ok aí eu apago a linha 10 inteira e passo para a próxima, e assim por diante.

 

Não tenho conhecimento para fazer uma macro que execute os passos B até o E apenas com um atalho de teclado. Minhas tentativas com o gravador de macro foram todas falhas.

 

Minha ideia é colocar o cursor sobre a célula que eu identificar visualmente e apertar uma tecla que execute estas etapas de B ao E, e não uma coisa que varra automaticamente a planilha inteira, pois alguns registros não quebraram.

 

Há como fazer isso através de uma macro? Como fazer?

 

Grato, de antemão.

 

Obs.: O Office é o 365 ProPlus. Não sei se isso é uma informação relevante, mas fica aí para registro.

Link para o comentário
Compartilhar em outros sites

 

Veja se o código abaixo ajuda.

 

Sub Concatena()
 ActiveCell.Value = ActiveCell.Value & Chr(10) & ActiveCell.Offset(1, -6).Value
End Sub

funcionamento ~~~> o código irá concatenar (o conteúdo da célula ativa) & (nova linha) & (o conteúdo da célula 6 colunas à esquerda e 1 linha abaixo da célula ativa).

exemplos com base nos seus comentários, se a posição relativa entre as células não for sempre essa então o código precisará de ajustes:

1. se D9 = sapo e A10 = jacaré, selecionando D9 e rodando o código resultará em D9 conforme abaixo

image.png.65ae34e6fa866de99107d8d05d10f979.png  

 

2. se H9 = PTralha e B10 = robber, selecionando H9 e rodando o código resultará em H9 conforme abaixo

image.png.5c1c4a0a48b5dff68f7a050d7519075b.png

Link para o comentário
Compartilhar em outros sites

22 minutos atrás, mag00.barba disse:

A primeira parte de concatenação funcionou como um relógio.

Como assim, "primeira parte"? Existem outras partes ? Que eu saiba a concatenação não se divide em partes.😕

 

Alguma forma de eu conseguir uma outra com os passos D e E?

O código que passei faz o que você descreveu nos itens D e E! Leia o que eu comentei em "funcionamento" e veja o segundo exemplo que coloquei. Se não for isso, então explique.

 

 

 

Link para o comentário
Compartilhar em outros sites

Acho que não fui claro na exposição da dúvida. Desculpe-me. Vou colocar novamente em outras palavras.

 

A primeira parte era a concatenação dos dados da célula que quebrava. Isso ficou zerado com o código que você montou. Novamente agradeço por isso.

 

A outra parte (D e E) seria essa citada abaixo:

Em ‎24‎/‎11‎/‎2018 às 15:54, mag00.barba disse:

d- Depois disso desloco o cursor para a célula B10 e seleciono continuamente até a célula X10, copio esse conteúdo para a memória via CTRL+C;

e- Desloco o cursor para a célula H9 e colo as células copiadas através do CTRL+V, pois esse seria o final da formação das colunas originais da tabela.

 

Vamos dizer que nessa segunda parte, eu preciso pegar um conjunto de células de uma mesma linha e reposicionar na planilha, iniciando na primeira célula a direita da célula para onde foi feita a concatenação.

 

Exemplificando de forma diferente, vamos dizer que minha tabela original tinha 10 colunas. De A a J, conforme simulação abaixo:

   A      B      C      D            E           F      G      H      I      J
 Texto  Texto  Texto  Texto  Texto que quebra  Texto  Texto  Texto  Texto  Texto

 

Quando trago o CSV para o Excel, a célula da coluna E quebra e pula parte do conteúdo para a linha de baixo e trás junto o resto da tabela.

 

Então no Excel eu tenho o seguinte resultado logo após a importação:

   A      B      C      D        E        F      G      H      I      J   
 Texto  Texto  Texto  Texto  Texto que 
quebra  Texto  Texto  Texto  Texto      Texto

A primeira parte, fez o texto da coluna E (neste novo exemplo) virar uma coisa só, porém o resto dos dados, de B a F na linha 2 ainda preciso mover na mão para as colunas de F a J na linha 1. Isso é o que chamei de segunda parte.

 

Grato.

Link para o comentário
Compartilhar em outros sites

@osvaldomp, consegui fazer as macros.

 

Peguei a sua e fiz umas adaptações e depois pesquisei mais um pouco e fui juntando os pedaços e consegui duas macros distintas mas que fazem o trabalho com muito mais facilidade do que eu estava fazendo na unha.

 

Abaixo segue como ficaram as macros:

Primeira fase

Sub concatena_apaga()
'
' concatena_apaga Macro
' Concatena e apaga linha de baixo
'
    ActiveCell.Value = ActiveCell.Value & Chr(10) & ActiveCell.Offset(1, -6).Value
    ActiveCell.Offset(1, 0).Activate
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
    ActiveCell.Offset(-1, 6).Activate

'
End Sub

Segunda fase

Sub linha_final()
'
' linha_final Macro
' Concatena e move células restantes e apaga linha de baixo
'
    ActiveCell.Value = ActiveCell.Value & Chr(10) & ActiveCell.Offset(1, -6).Value
    ActiveCell.Offset(1, -5).Activate
    ActiveCell.Resize(1, 30).Cut Destination:=ActiveCell.Offset(-1, 6).Resize(1, 30)
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
    ActiveCell.Offset(0, 6).Resize(1, 1).Activate

'
End Sub

 

Obrigado novamente.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!