Página 1 de 1

Busca Avançada

Enviado: Seg Fev 03, 2020 7:47 am
por Adonias
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.

!

Enviado: Ter Fev 11, 2020 7:57 am
por Reinaldo
"...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....

Re: Busca Avançada

Enviado: Qui Fev 13, 2020 6:15 pm
por Adonias
Reinaldo, agradeço o interesse em resolver desde já.
eu coloquei mais informações dentro da planilha que segue agora.

aguardo

Re: Busca Avançada

Enviado: Sex Fev 14, 2020 4:18 pm
por Reinaldo
Teste / experimente
localiza.zip
(24.42 KiB) Baixado 180 vezes

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

Enviado: Dom Fev 16, 2020 8:05 am
por Adonias
Reinaldo, eu almejo um dia conhecer tanto assim do VBA. Você resolveu com classe meu amigo.
Código enxuto, eficiente e objetivo.
Muito Obrigado.