Página 1 de 1

Vba Comparar

Enviado: 09 Abr 2022 às 15:12
por ROSANO
Boa tarde!

Alguem poderia me indicar uma macro que comparasse os valores de uma planilha2, com os valores de uma planilha1, mais de 30000 linhas, e que me retornasse numa planiha3 apenas os valores que constam nas duas primeiras?

Grato!

Re: Vba Comparar

Enviado: 09 Abr 2022 às 18:46
por babdallas
Você quer comparar uma coluna apenas ou mais de uma? Se anexar um exemplo (xlsx ou xlsm) fica mais fácil de entender.

Re: Vba Comparar

Enviado: 09 Abr 2022 às 18:58
por PHSabater
@ROSANO, o nosso amigo @babdallas, falou tudo.
Com o arquivo ou parte dele anexo é mais fácil te ajudar.
Abraço.

Re: Vba Comparar

Enviado: 10 Abr 2022 às 07:54
por ROSANO
É simples.

Pense numa tabela com 40.000 CPF's na 1º coluna e varias colunas com outros dados.
Agora pense em outra tabela com 7.000 CPF's na 1º coluna e varias colunas com outros dados.
O que preciso é puxar para uma terceira tabela cada CPF da 2º tabela que aparece na 1º tabela (maior numero de dados).
Eu teria a tabela 3 só com os CPF's da 2 tabela que aparecem na tabela 1.
Acredito que seja possível montar uma tabela assim sem a necessidade de enviar meu arquivo, pois alem de muito grande, o arquivo é da empresa, não posso colocar nem os CPF's aqui.

Muitíssimo Obrigado!

Aguardo esperançoso por resposta!

Re: Vba Comparar

Enviado: 10 Abr 2022 às 10:08
por PHSabater
De forma simples, vamos lá.
Faça um loop pra percorrer a aba com 7.000 CPFs, a cada linha dela, faça um loop na aba com 30000 CPFs, compare os CPFs, quando encontrar na aba com 30000 CPFs, carregue esses registros para sua aba 3. Aborte o loop na aba com 30000 CPFs , vai pular pro registro 2 de 7000 na outra e assim até terminar.

Re: Vba Comparar

Enviado: 10 Abr 2022 às 10:51
por ROSANO
Simples pra voces, nao pra mim.
Poderia, por gentileza, repetir isso em forma de macro?
Muito Obrigado!

Re: Vba Comparar

Enviado: 10 Abr 2022 às 17:31
por PHSabater
Supomos que seus dados estejam na Plan1 e Plan2, e que na Plan3 queira adicionar os resultados. Considero que os registros comecem na linha 2 e que a coluna do CPF em ambas estejam em A.
Código: Selecionar todos
Public Sub Consolidar()
Dim lPlan2 as Long 'percorre as linhas de Plan2
Dim lBusca as Long 'percorre as linhas de Plan1
Dim lResult as Long 'incrementa os resultados consolidados

lPlan2 = 2
lBusca = 2
lResult = 2

'Loop para varrer a tabela maior procurando estes registros
Do Until Plan2.Cells(lPlan2, 1) = ""

'Loop para busca na tabela maior
Do Until Plan1.cells(lBusca,1) = ""

If Plan1.Cells(lBusca,1) = Plan2.Cells(lPlan2,1) Then
Plan3.Cells(lResult,1) = Plan1.Cells(lBusca,1) 'transfere a coluna do cpf de plan1 para plan3
'demais colunas precisam vir dentro desse bloco
lResult = lResult+1
Exit Do
End If

lBusca=lBusca+1
Loop

lPlan2 = lPlan2+1
lBusca = 2
Loop


End Sub

Re: Vba Comparar

Enviado: 11 Abr 2022 às 10:53
por osvaldomp
ROSANO escreveu: 09 Abr 2022 às 15:12 Alguem poderia me indicar uma macro que comparasse os valores de uma planilha2, com os valores de uma planilha1, mais de 30000 linhas, e que me retornasse numa planiha3 apenas os valores que constam nas duas primeiras?
Ao rodar o código abaixo a Planilha2 deverá ser a planilha ativa.
O código funciona com qualquer quantidade de registros tanto na Planilha1 como na Planilha2.
Código: Selecionar todos
Sub CPFsDuplicados()
 Dim LR As Long
  Application.ScreenUpdating = False
  LR = Sheets("Planilha1").Cells(Rows.Count, 1).End(3).Row
  Sheets("Planilha3").[A:A] = ""
  With ActiveSheet
   On Error Resume Next
   .ShowAllData
   On Error GoTo 0
   .Columns(2).Insert
   .Range("B1:B" & Cells(Rows.Count, 1).End(3).Row).FormulaLocal = "=CONT.SE(Planilha1!A$2:A$" & LR & ";A1)"
   .[A1].AutoFilter 2, ">0"
   .Range("A2:A" & Cells(Rows.Count, 1).End(3).Row).Copy Sheets("Planilha3").[A2]
   .ShowAllData
   .Columns(2).Delete
  End With
End Sub

Re: Vba Comparar

Enviado: 12 Abr 2022 às 08:19
por ROSANO
Bom Dia!
Prezados,
Não funcionou aqui.
Seria pedir demais me mandarem um arquivo com o código já funcionando?
Imensamenmte grato!

Re: Vba Comparar

Enviado: 12 Abr 2022 às 21:21
por PHSabater
@ROSANO, é melhor você recortar parte da sua planilha com as três abas formatadas conforme sua necessidade, insira duas ou três linhas de dados fictícios, assim podemos fazer a rotina entregar o que você está precisando... O código que deixei anteriormente faz o que precisa, mas tem que adaptar para sua realidade com nome das abas, posição das colunas e etc.

A grosso modo para pegar pegar as colunas pode ser feito um loop também, mas tem que ver a organização do seu arquivo.

Qualquer dúvida pode me chamar no e-mail p.h.sabater@gmail.com.

Abraço.

Re: Vba Comparar

Enviado: 13 Abr 2022 às 14:39
por ROSANO
Planilha enviada como pedido.

Re: Vba Comparar

Enviado: 13 Abr 2022 às 20:54
por PHSabater
Respondido via e-mail.