Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Busca Avançada
Busca Avançada
Bom dia Pessoal,
Estou com um probleminha pra resolver.
A propósito, encontrei a solução para o meu último problema, depois posto aqui.
Agora preciso do seguinte código:
Tenho duas planilhas enormes e quero localizar e descobrir se na segunda planilha está cada um dos números de lotes constantes da primeira planilha e se a data de protocolo da primeira planilha está dentro do período de emissão e validade da segunda planilha para cada numero de lote encontrado.
Quando encontrado, gostaria que na plan3 fosse colocado as seguintes informações encontradas e correspondentes:
Código; numero de lote; protocolo; data de emissão; e validade, um na frete do outro.
Eu colei as informações da plan2 ao lado das informações da Plan1 e, dentro dela, para facilitar o entendimento, mas cada tabela está em planilhas diferentes.
Estou com um probleminha pra resolver.
A propósito, encontrei a solução para o meu último problema, depois posto aqui.
Agora preciso do seguinte código:
Tenho duas planilhas enormes e quero localizar e descobrir se na segunda planilha está cada um dos números de lotes constantes da primeira planilha e se a data de protocolo da primeira planilha está dentro do período de emissão e validade da segunda planilha para cada numero de lote encontrado.
Quando encontrado, gostaria que na plan3 fosse colocado as seguintes informações encontradas e correspondentes:
Código; numero de lote; protocolo; data de emissão; e validade, um na frete do outro.
Eu colei as informações da plan2 ao lado das informações da Plan1 e, dentro dela, para facilitar o entendimento, mas cada tabela está em planilhas diferentes.
- Anexos
-
- localiza.zip
- (6.24 KiB) Baixado 175 vezes
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
!
"...Eu colei as informações da plan2 ao lado das informações da Plan1 e, dentro dela, para facilitar o entendimento..."
Para mim, pelo menos está confuso, não entendi seu exemplo nem as descriçao da demanda/necessidade/motivo
Experimente montar um modelo demonstrando, manualmente ou com formulas
Na
Sheet "A" tenho ....
Sheet "B" tenho ....
Espero na Sheet "C"...., pelos seguintes motivos....
Para mim, pelo menos está confuso, não entendi seu exemplo nem as descriçao da demanda/necessidade/motivo
Experimente montar um modelo demonstrando, manualmente ou com formulas
Na
Sheet "A" tenho ....
Sheet "B" tenho ....
Espero na Sheet "C"...., pelos seguintes motivos....
Re: Busca Avançada
Reinaldo, agradeço o interesse em resolver desde já.
eu coloquei mais informações dentro da planilha que segue agora.
aguardo
eu coloquei mais informações dentro da planilha que segue agora.
aguardo
- Anexos
-
- localiza.zip
- (12.31 KiB) Baixado 169 vezes
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Busca Avançada
Teste / experimente
Código: Selecionar todos
Private Sub Verifica_Codigo()
'Declaração de variaveis
Dim Localizado As Range, FirstReg As String
Dim wsM As Worksheet, wsBD As Worksheet, wsDest As Worksheet
Dim lngLinha As Long, lngUltLinha As Long
Dim lngX As Integer, lngY As Long
'Atribui valores as variaveis
Set wsM = Sheets("Plan1") 'planilha origem dos dados
Set wsBD = Sheets("Plan2") 'planilha destino dos dados
Set wsDest = Sheets("Plan3") 'planilha destino dos dados
lngUltLinha = wsM.Cells(wsM.Rows.Count, "A").End(xlUp).Row
lngY = 1
For lngX = 2 To lngUltLinha
With wsBD.Range("A:A")
Set Localizado = .Cells.Find(wsM.Range("B" & lngX).Value, LookIn:=xlValues, LookAt:=xlPart)
'Inicia registro dos dados
If Not Localizado Is Nothing Then
FirstReg = Localizado.Address
Do
'Se houver registro "anota" numero da linha
lngLinha = Localizado.Cells.Row 'guarda numero da linha onde consta o registro
If wsM.Range("C" & lngX).Value >= wsBD.Range("B" & lngLinha) And wsM.Range("C" & lngX).Value <= wsBD.Range("C" & lngLinha) Then
lngY = lngY + 1
wsDest.Range("A" & lngY) = wsM.Range("A" & lngX).Value 'código
wsDest.Range("B" & lngY) = wsM.Range("B" & lngX).Value 'numero de lote
wsDest.Range("C" & lngY) = wsM.Range("C" & lngX).Value 'protocolo
wsDest.Range("D" & lngY) = wsBD.Range("B" & lngLinha).Value 'emissao
wsDest.Range("E" & lngY) = wsBD.Range("C" & lngLinha).Value 'validade
wsDest.Range("F" & lngY) = "Período correspondente"
End If
'Verifica se há outro registo
Set Localizado = .FindNext(Localizado)
Loop While Not Localizado Is Nothing And Localizado.Address <> FirstReg
End If
End With
Next
End Sub
Re: [RESOLVIDO]Busca Avançada
Reinaldo, eu almejo um dia conhecer tanto assim do VBA. Você resolveu com classe meu amigo.
Código enxuto, eficiente e objetivo.
Muito Obrigado.
Código enxuto, eficiente e objetivo.
Muito Obrigado.