CONHEÇA o BABOO PRO e a Comunidade BABOO que substituirão o site BABOO e esse fórum

Ir para conteúdo
  • Cadastre-se
g.lupinacci

RESPONDIDO Macro procurar valor / copiar célula seguinte

Mensagem Recomendada

Pessoal boa tarde!

 

Preciso do auxílio de vocês! Estou quebrando a cabeça com alguma macro onde:

 

(Planilha 1) Coluna A possui códigos de 0 a 9999.

(Planilha 2) Coluna A possui alguns dos códigos da Plan1 em ordem aleatória. As colunas B, C, nesta planilha, estão preenchidas com valores.

 

Preciso que na Plan1, ao lado de cada código, retorne os valores da Plan2, (colunas B e C) quando o código da Coluna A coincidir.

 

Não sei se me fiz claro...fico à disposição para esclarecer melhor, mas é bem parecido com uma função SE, exceto pelo fato de trabalhar com ranges grandes.

 

Muito obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sub Teste()
  Dim LR As Long, k As Long, cod As Range, ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Plan2")
      LR = ws.Cells(Rows.Count, 1).End(xlUp).Row
        For k = 1 To LR
          With Sheets("Plan1")
            Set cod = .Range("A:A").Find(ws.Cells(k, 1).Value, LookAt:=xlWhole)
              If Not cod Is Nothing Then
                cod.Offset(, 1).Resize(, 2).Value = ws.Cells(k, 2).Resize(, 2).Value
              End If
          End With
        Next k
End Sub

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Office Expert,

 

Muito obrigado pelo apoio!

 

Não foi necessária a postagem pois o Osvaldo acertou em cheio!

 

Osvaldo, muito obrigado!!! Funcionou perfeitamente.

 

Um abraço!

 

Gabriel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Office Expert,

 

Sou totalmente newbie em macro... executei e funcionou ok, procurando e colando os valores da coluna B e C do plan2.

 

Porém, como eu edito o macro para copiar os valores da coluna B até a coluna J do plan2?

 

Obrigado e desculpe pela pergunta tosca!

 

 

Sub Teste()
  Dim LR As Long, k As Long, cod As Range, ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Plan2")
      LR = ws.Cells(Rows.Count, 1).End(xlUp).Row
        For k = 1 To LR
          With Sheets("Plan1")
            Set cod = .Range("A:A").Find(ws.Cells(k, 1).Value, LookAt:=xlWhole)
              If Not cod Is Nothing Then
                cod.Offset(, 1).Resize(, 2).Value = ws.Cells(k, 2).Resize(, 2).Value
              End If
          End With
        Next k
End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Porém, como eu edito o macro para copiar os valores da coluna B até a coluna J do plan2?

 

 

 

substitua esta linha

cod.Offset(, 1).Resize(, 2).Value = ws.Cells(k, 2).Resize(, 2).Value

por esta

cod.Offset(, 1).Resize(, 9).Value = ws.Cells(k, 9).Resize(, 2).Value

 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@osvaldomp não entendi essa sequencia

cod.Offset(, 1).Resize(, 9).Value = ws.Cells(k, 9).Resize(, 2).Value

Estou tentando alterar para copiar a coluna B até a coluna BM.

Poderia me explicar o que significa cada numero dentro dos parenteses? Sou iniciante e estou com um pouco de dificuldade.

Obrigada desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Raíssa

Seja bem-vinda ao fórum!

Substitua por este:

cod.Offset(, 1).Resize(, 64).Value = ws.Cells(k, 64).Resize(, 2).Value

No lugar da coluna J que é a 9 a partir da B, você deve usar 64 que que é número de colunas a partir da B.

[]s


Patropi - Moderador

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, Raíssa Rodriguez Soares disse:

@osvaldomp não entendi essa sequencia


cod.Offset(, 1).Resize(, 9).Value = ws.Cells(k, 9).Resize(, 2).Value

Estou tentando alterar para copiar a coluna B até a coluna BM.

Poderia me explicar o que significa cada numero dentro dos parenteses? Sou iniciante e estou com um pouco de dificuldade.

Obrigada desde já!

@Raíssa, há um erro meu no comando acima, estão invertidas as posições entre os números 2 e 9 à direita da igualdade. O correto é conforme abaixo.

cod.Offset(, 1).Resize(, 9).Value = ws.Cells(k, 2).Resize(, 9).Value

No seu caso, como o Patropi sugeriu, altere para :

cod.Offset(, 1).Resize(, 64).Value = ws.Cells(k, 2).Resize(, 64).Value


 

Osvaldo

 

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

Quer postar a sua dúvida? Cadastre-se pois é rápido e fácil!

Crie uma nova conta

Entrar

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

Entrar Agora

×
×
  • Criar Novo...