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