Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por ROSANO
Posts
#70183
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!
Por babdallas
#70190
Você quer comparar uma coluna apenas ou mais de uma? Se anexar um exemplo (xlsx ou xlsm) fica mais fácil de entender.
Avatar do usuário
Por PHSabater
Posts Avatar
#70191
@ROSANO, o nosso amigo @babdallas, falou tudo.
Com o arquivo ou parte dele anexo é mais fácil te ajudar.
Abraço.
Por ROSANO
Posts
#70201
É 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!
Avatar do usuário
Por PHSabater
Posts Avatar
#70202
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.
Por ROSANO
Posts
#70203
Simples pra voces, nao pra mim.
Poderia, por gentileza, repetir isso em forma de macro?
Muito Obrigado!
Avatar do usuário
Por PHSabater
Posts Avatar
#70206
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
Por osvaldomp
#70221
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
Por ROSANO
Posts
#70236
Bom Dia!
Prezados,
Não funcionou aqui.
Seria pedir demais me mandarem um arquivo com o código já funcionando?
Imensamenmte grato!
Avatar do usuário
Por PHSabater
Posts Avatar
#70245
@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.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord