Saberexcel - o site de quem precisa aprender macros microsoft Excel
Esses dois macros fazerm a comparação entre duas folhas de Planilhas e retorna o resultado dos dados para uma terceira folha de planilha que aqui nomeamos como Resultado: resultado Nomes comuns(Iguais nas duas tabelas (duas Planilhas) e NOMES NÃO COMUNS ( Nomes diferentes nas duas Planilhas) . Caso queira baixar a planilha exemplo(Link fim da página) --- cadastre no site: Home > Registre-se >
'Esse macro retorna os nomes NAO COMUNS - entre as duas listas nas duas Folhas de planihas (Compara1 e Comparar2)
Sub sbs_comparando_planilhas()
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' testa se o vNome é diferente
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dim b As Long
Dim t As Long
Dim vQuantidade1 As Long
Dim vQuantidade2 As Long
Dim vEncontrado As Single
Dim LinhaPlanRel As Long
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' para facilitar as comparações, dois nomes tabelas são criadas, isto é, melhorar a performance
Dim vNome1(1000) As String ' ***** revisar o número conforme necessário
Dim vNome2(1000) As String ' ***** sempre para o mesmo número
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'para preencher a primeira tabela::
Sheets("Compara1").Select 'selecionando a planilha para ativá-la
For b = 1 To Saber3.Range("A65000").Row
vNome1(b) = Cells(b, 1)
If Cells(b + 1, 1) = "" Then Exit For 'se encontrar celula vazia sai do loop
Next b
vQuantidade1 = b
'para preencher a segunda tabela:
Sheets("Compara2").Select 'selecionando para ativar a planilha
For t = 1 To Saber2.Range("A65000").Row
vNome2(t) = Cells(t, 1)
If Cells(t + 1, 1) = "" Then Exit For 'se encontrar uma celula vazia sai do loop for
Next t
vQuantidade2 = t
'Comparando as planilhas e extrair dados para planilha Relatório
Sheets("Relatorio").Select 'Selecinando a planilha relatório,
[C2:C6000].ClearContents 'Limpar a coluna(A)
LinhaPlanRel = 1
Cells(1, 3) = "NAO COMUNS"
For b = 1 To vQuantidade1
vEncontrado = 0
For t = 1 To vQuantidade2
If vNome1(b) = vNome2(t) Then
vEncontrado = 1
End If
Next t
If vEncontrado = 0 Then 'Nome vEncontrado
Cells(LinhaPlanRel + 1, 3) = vNome1(b)
LinhaPlanRel = LinhaPlanRel + 1
End If
Next b
End Sub
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Esse macro retorna os nomes EM COMUM - entre as duas listas nas duas Folhas de planihas (Compara1 e Comprar2)
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sub sbx_comparando_planilhas()
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' testa se o nome é igual
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dim b As Long
Dim t As Long
Dim vQuantidade1 As Long
Dim vQuantidade2 As Long
Dim LinPlan3 As Long
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' para facilitar as comparações, dois nomes tabelas são criadas, isto é, melhorar a performance
Dim vNome1(1000) As String ' ***** revisar o número conforme necessário
Dim vNome2(1000) As String ' ***** sempre para o mesmo número
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'para preencher a primeira tabela:
Sheets("Compara1").Select 'selecionando para ativar a planilha
For b = 1 To 65536
vNome1(b) = Cells(b, 1)
If Cells(b + 1, 1) = "" Then Exit For 'ao encontrar um célula em branco sai do loop
Next b
vQuantidade1 = b
'para preencher a segunda tabela:
Sheets("Compara2").Select 'selecionando para ativar a planilha
For t = 1 To 65536
vNome2(t) = Cells(t, 1)
If Cells(t + 1, 1) = "" Then Exit For 'ao encontrar um célula em branco sai do loop
Next t
vQuantidade2 = t
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' comparação
Sheets("Relatorio").Select 'selecionando a terceira planilha para receber que fique ativa receber dados
Columns("A:A").ClearContents ' Limpando a area para receber os novos dadosa
LinPlan3 = 1
Cells(1, 3) = "DADOS EM COMUM"
For b = 1 To vQuantidade1
For t = 1 To vQuantidade2
If vNome1(b) = vNome2(t) Then
Cells(LinPlan3 + 1, 3) = vNome1(b)
LinPlan3 = LinPlan3 + 1
End If
Next t
Next b
End Sub
'com a inteção didática para aprendermos sobre intrução Loops for next
Sub sbx_limpar_teste()
Dim i As Long
For i = 2 To Saber4.[C65000].End(xlUp).Row
Cells(i, "C").ClearContents
Next i
End Sub
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sub sbx_selecionar_rel()
Saber4.Select
End Sub
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Aprenda tudo sobre planilhas do Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Escola Saberexcel VBA Estudos® - Treinamentos com Macros, Fórmulas e Funções.
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Para baixar esse exemplo de planilha, deverá fazer o login na área livre registrados, é bem simples
Acesso Livre - Registrados (REGISTRE-SE!)
Baixe o exemplo de planilha contendo os macros acima:
Excel planilha vba comparar dados duas planilhas (91.97 KB)
Comentários
Assine o RSS dos comentários