Ir ao conteúdo
  • Cadastre-se
Gilberto_Silva

Excel Macro procurar e copiar e colar

Recommended Posts

Boa tarde.

Preciso de ajuda para fazer uma macro no Excel. Já utilizei o forum vária vezes para tirar dúvidas e consegui encontrar todas usando a busca. Porém desta vez não consegui encontrar.

É o seguinte.

Tenho uma lista de contas contábeis em uma coluna de uma Plan "Balancete" na coluna A6 até .... (esse quantidade depende de empresa para empresa), ao lado desta Plan tenho varias outras que tem o mesmo nome desta lista e com as mesmas formatações de quantidade de colunas etc.

 

Preciso criar uma macro que leia a lista de contas na Plan "Balancete" e localize a respectiva Plan de nome igual e na sequencia, pegue e realizar uma função igual ao PROCV, ou seja, abra localize a conta XXX da Plan "Balancete" na célula A6, na célula C6 da Plan correspondente e traz o valor da célula F6. 

 

 

Desde já agradeço

 

Gilberto

 

Editado por DiF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão - disponibilize uma amostra do seu arquivo Excel, com 4 a 5 linhas com dados, com 3 ou 4 planilhas, com o resultado desejado e com as explicações na própria planilha Balancete de como obteve os resultados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Gilberto.

Eu não consegui acessar o arquivo.

Anexe-o aqui no fórum, é mais fácil e mais simples para você e também para quem quiser baixar. Logo abaixo da caixa de resposta clique em "escolha os arquivos"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gilberto, veja se o código abaixo atende.

O resultado será colocado na planilha Listar Abas como mostrado abaixo. O erro em C12 ocorre porque a planilha 63 não existe no arquivo.

Sub ReplicaDados()
 Dim LRd As Long, LRo As Long, c As Range
  Application.ScreenUpdating = False
  On Error Resume Next
  Sheets("BALANCETE_2018").ShowAllData

   If Sheets("Listar Abas").[A6] <> "" Then Sheets("Listar Abas") _
   .Range("A6:C" & Sheets("Listar Abas").Cells(Rows.Count, 1).End(3).Row).Value = ""
   
  With Sheets("BALANCETE_2018")
   LRo = .Cells(Rows.Count, 1).End(3).Row
   .[A5].AutoFilter 2, ""
   .[A5].AutoFilter 3, "<>1.1.02.001.001*"
   .Range("A6:A" & LRo).SpecialCells(12).Copy Sheets("Listar Abas").[A6]
   .Range("C6:C" & LRo).SpecialCells(12).Copy Sheets("Listar Abas").[B6]
   On Error Resume Next
   .ShowAllData
  End With

  With Sheets("Listar Abas")
   LRd = .Cells(Rows.Count, 1).End(3).Row
   .Range("C6:C" & LRd).Formula = "=INDIRECT(A6&""!F4"")"
   .Range("C6:C" & LRd).Value = .Range("C6:C" & LRd).Value
  End With
  Application.ScreenUpdating = True
End Sub

 

 

obs. verifique a planilha BALANCETE_2018 pois há dados visíveis somente no intervalo A5:G23 no entanto ela está acusando que o intervalo em uso é A:H, ou seja, as colunas inteiras, talvez alguma formatação ou sujeira invisível, e isso poderá provocar aumento no tamanho do arquivo e lentidão para abrir, fechar, salvar, recalcular. Seria conveniente copiar os dados para uma planilha vazia e excluir a atual.

 

Resultado

image.png.d9bfdef93761abc5b1061f59cf4b7fbf.png

 

 

Editado por osvaldomp
colocar Tags no código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Osvaldo,

 

tentei rodar o código, porém resulta em erro...

image.png.1808d74b3c18a9b192166bfdbb195267.png

 

Quanto ao modelo de resultado que você apresentou, ficou um pouco diferente ao que estava esperando, veja o modelo do resultado final esperado.

 

image.thumb.png.b2258227d818b86042eeb0ea70fb7195.png

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 09/09/2018 às 20:04, Gilberto_Silva disse:

tentei rodar o código, porém resulta em erro

 

Editei o post #6 e coloquei Tags no código, veja se ainda ocorre o erro.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Osvaldo,

 

obrigado pelo retorno, acho que não me expliquei bem.

 

Seria possível, apenas copiar os nomes das planilhas para a coluna C linha 6 na planilha "Listar Abas"? e na copiar os valores das células F4 destas mesmas planilhas para a coluna D linha 6?

 

image.png.1d98c373d3b5f2a820d3dac359154d70.png 

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 horas atrás, Gilberto_Silva disse:

Seria possível, apenas copiar os nomes das planilhas para a coluna C linha 6 na planilha "Listar Abas"? e na copiar os valores das células F4 destas mesmas planilhas para a coluna D linha 6?

O código abaixo colocará o resultado nas colunas B:C, conforme a imagem abaixo que você disponibilizou, que está diferente da sua descrição acima. E o resultado do código será diferente do resultado da imagem pois o da imagem não atende aos critérios que você próprio informou.

image.png.1d98c373d3b5f2a820d3dac359154d70.png 


 

Sub ReplicaDadosV2()
 Dim LRd As Long, LRo As Long, c As Range
  Application.ScreenUpdating = False
  On Error Resume Next
  Sheets("BALANCETE_2018").ShowAllData

   If Sheets("Listar Abas").[B6] <> "" Then Sheets("Listar Abas") _
   .Range("B6:C" & Sheets("Listar Abas").Cells(Rows.Count, 2).End(3).Row).Value = ""
   
  With Sheets("BALANCETE_2018")
   LRo = .Cells(Rows.Count, 1).End(3).Row
   .[A5].AutoFilter 2, ""
   .[A5].AutoFilter 3, "<>1.1.02.001.001*"
   .Range("A6:A" & LRo).SpecialCells(12).Copy Sheets("Listar Abas").[B6]
   On Error Resume Next
   .ShowAllData
  End With

  With Sheets("Listar Abas")
   LRd = .Cells(Rows.Count, 2).End(3).Row
   .Range("C6:C" & LRd).Formula = "=INDIRECT(B6&""!F4"")"
   .Range("C6:C" & LRd).Value = .Range("C6:C" & LRd).Value
  End With
  Application.ScreenUpdating = True
End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 17/09/2018 às 00:40, osvaldomp disse:

.

Osvaldo, obrigado pelo retorno.

 

para simplificarmos, o código poderia ser modificado para fazer a minha citação?

 

mais uma vez obrigado

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×