Ir ao conteúdo

Excel Comparar valores e copiar


Ir à solução Resolvido por O_Aprendiz,

Posts recomendados

  • Solução
Postado

Olá!

Alguém que seja expert em VBA e que tenha alguns minutinhos consegue analisar o código e dar um help?! 

Eu preciso que esta macro compare os valores de uma célula em uma planilha(1) com uma coluna em outra planilha(2) e caso os valores constem, que ele copie os valores para a mesma linha da planilha(1) e se não nessa comparação o valor não estiver na planilha(2), que ele copie determinadas células no final da tabela.

Fiz vários testes aqui, mas chega em determinado ponto que a macro pula "misteriosamente" para outra macro do mesmo arquivo. rs

Se alguém já tiver algum modelo assim e puder compartilhar também, será muito bem vindo!

Muito obrigado!

 

Sub Procura()
Dim valor1 As Variant
Dim valor2 As Variant
Dim arquivo_origem As Variant
Dim arquivo_destino As Variant
Dim posicao1 As Range
Dim posicao2 As Range
Dim planilhadestino As Workbook
Dim planilhaorigem As Workbook
Dim guiadestino As Worksheet
Dim guiaorigem As Worksheet
Dim planilhaativa As Worksheet
Dim ultimalinhaplan1 As Long
Dim ultimalinhaplan2 As Long
Dim variavel2 As Long
Dim variavel3 As Long
Dim valorprocurado As Range


Set planilhaorigem = ThisWorkbook: Set guiaorigem = planilhaorigem.ActiveSheet
'guiadestino = Worksheets("Novo")
'guiaorigem = Worksheets("Acompanhamento")

Set arquivo_origem = ThisWorkbook.ActiveSheet
arquivo_destino = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Escolha o arquivo:")
If arquivo_destino = False Then MsgBox "Erro!": Exit Sub
  Set planilhadestino = Workbooks.Open(arquivo_destino)
  
  Application.ScreenUpdating = False
    planilhadestino.Activate
Set guiadestino = Sheets("Planilha1")
Set planilhaativa = guiadestino
   planilhaativa.Activate
If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then
  ActiveSheet.ShowAllData
  End If
  ultimalinhaplan1 = guiadestino.Cells(Rows.Count, 1).End(xlUp).Row
If ultimalinhaplan1 < 2 Then MsgBox "Erro!": Exit Sub

Set valorprocurado = Worksheets("Planilha1").Range("D2:D1000")

planilhaorigem.Activate

  With guiaorigem
   'On Error Resume Next
If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then
  ActiveSheet.ShowAllData
  End If
   On Error GoTo 0
   If .[C2] = "" Then ultimalinhaplan2 = 1 Else: ultimalinhaplan2 = .Cells(Rows.Count, 1).End(xlUp).Row
   guiaorigem.Activate
   
   Range("G8").Select 
   
Do Until ActiveCell = "" 

    ActiveCell.Offset(1, 0).Select 

    If ActiveCell = "valorprocurado" Then   
    
   .Range("E9:G" & ultimalinhaplan1 & ",J9:J" & ultimalinhaplan1 & ",T9:T" & ultimalinhaplan1).Copy

planilhadestino.Activate
guiadestino.Activate
    
    .Range("D9:F" & ultimalinhaplan1 & ",H9:H" & ultimalinhaplan1 & ",R9:R" & ultimalinhaplan1).ClearContents
    .Range("D9:F" & ultimalinhaplan1 & ",H9:H" & ultimalinhaplan1 & ",R9:R" & ultimalinhaplan1).Paste
    
    ElseIf ActiveCell = "" Then 
    End If
    
    Loop
    .Range("A1").Select ' retorna para o inicio da coluna
    .Range("E9:G" & ultimalinhaplan1 & ",J9:J" & ultimalinhaplan1 & ",T9:T" & ultimalinhaplan1).Copy
    .Cells(ultimalinhaplan2 + 1, 1).PasteSpecial xlValues
    variavel3 = .Cells(Rows.Count, 1).End(3).Row

  End With

Exit Sub
errH: MsgBox "Erro!"
End Sub

 

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!