Ir ao conteúdo
  • Cadastre-se

Visual Basic vba comparação de valores entre tabelas


Posts recomendados

Bom dia pessoal ! 

 Gostaria de compartilhar uma dúvida e tentar uma ajuda !

 Primeiramente, eu não posso enviar a planilha aqui pois estou em ambiente corporativo onde sou proibido de compartilhar arquivos, qualquer que seja.

 Bom vamos lá, abaixo tenho as duas tabelas :

 

A                                                 B

SM-A2323                           SM-A2323

SM-A5890                           SM-A6060

SM-A6060                           SM-A8080

 

Eu preciso fazer a checagem de cada celula da coluna A que esta na Pan1, se contem na coluna B da Plan2.

Se o valor de alguma célula da coluna A da Plan1, não existir na coluna B da Plan 2, na coluna B da plan 2, inserir um linha, adicionar o valor que não existe ordena em ordem alfabética.

 

 Parece simples, mas não consegui desenvolver um código simples pra isso.

 Poderiam me ajudar com isso?

 

 

Muito obrigado ! 

Link para o comentário
Compartilhar em outros sites

Tentei isso mas não deu certo :

 

 

Dim r As Range

Set r = Worksheets(3).Range("D5:D80")   -> Ex: seria a coluna A, plan1

For Each r In Range("B4:" & Range("B4").End(xlDown).Address) -> Ex: coluna B, plan2

 If r Is Nothing Then
  Worksheets(4).Range("B4").Select
   Selection.Insert
    ActiveCell.Value = r
 End If
Next r

Link para o comentário
Compartilhar em outros sites

@Ismael Souza Fiz de uma forma fácil de adaptar, veja se resolve.

 

Sub Macro()
    Dim A, B, R As Object
        
    Set A = ThisWorkbook.Worksheets("Plan1")
    Set B = ThisWorkbook.Worksheets("Plan2")
        
    For Each R In A.[A1:A3]
        If B.[B:B].Find(R) Is Nothing Then
            B.[B1048576].End(xlUp).Offset(1) = R
        End If
    Next R
End Sub

 

Link para o comentário
Compartilhar em outros sites

Desculpe @Midori, sou iniciante em VBA e não consegui desenvolver pra tudo que me referi.

adicionado 50 minutos depois

@Midori

 Fiz essa adaptação mas não funcionou, esta adicionando uma linha mesmo se já existir o valor da coluna A na coluna B.

 

 

sub Macro()
    Dim A, B, R As Object
        
    Set A = ThisWorkbook.Worksheets(3)
    Set B = ThisWorkbook.Worksheets(4)
        
    For Each R In A.[D5:D80]            ' o valor aqui é um inexistente, beleza
        If not B.[B:B].Find(R) Is Nothing Then
            B.[B5].Select
            Selection.Insert
             ActiveCell.Value = R
            
        End If
    Next R      'quando eu digo next R, os proximos valores já existem, mas mesmo assim esta adicionando
End Sub

Link para o comentário
Compartilhar em outros sites

@Ismael Souza A macro completa já com a função de ordenação.

 

Sub Macro()
    Dim A, B, R As Object
      
    Set A = ThisWorkbook.Worksheets("Plan1")
    Set B = ThisWorkbook.Worksheets("Plan2")
    
    For Each R In A.Range("A2:A" & A.Range("A1").End(xlDown).Row)
        If B.[B:B].Find(R) Is Nothing Then
            B.[B1048576].End(xlUp).Offset(1) = R
        End If
    Next R
    
    B.Sort.SortFields.Clear
    B.Sort.SortFields.Add2 Key:=B.Range("B2"), Order:=xlAscending
    B.Sort.SetRange B.Range("B1:B" & B.Range("B1").End(xlDown).Row)
    B.Sort.Apply
End Sub

 

adicionado 3 minutos depois
1 hora atrás, Ismael Souza disse:

esta adicionando uma linha mesmo se já existir o valor da coluna A na coluna B.

 

Veja se realmente não tem alguma diferença, pode ser um espaço.

Link para o comentário
Compartilhar em outros sites

@Midori Tenho um planilha A, onde o no Range("A5:T5") tem duas imagens.

 Preciso copiar o range e colar e uma planilha B.

 Ocorre que quando colo a imagem fica alterada.

 Existe uma maneira de fazer esse processo por VBA de maneira que a imagem fique no formato original?

 

Obrigado !

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