Ir ao conteúdo

Excel Busca e referência com VLookup


Ir à solução Resolvido por AfonsoMira,

Posts recomendados

Postado

Salve amigos! Mais uma vez recorro ao vasto conhecimento dos integrantes desse forum.

Recebi uma planilha de um departamento e estou com problemas com a busca e referência.

Na Plan2 existem 4 colunas, K, Q, BD e BC.

A coluna K tem o nome de ROUTER1 e a coluna Q, ROUTER2, coluna BC, PASS1 e coluna BD, PASS2

A TABELAB de referência está na Plan3("REF") com 3 colunas e 668 linhas

Se a coluna K tiver informação, faz um PROCV na 2ª coluna da TABELAB e retorna o valor na coluna BC

e na 3ª coluna da TABELAB e retorna o valor na coluna BD.

Se a coluna K estiver vazia, o valor a ser considerado é o da mesma linha na coluna Q, faz um PROCV na

2ª coluna da TABELAB e retorna o valor na coluna BC e na 3ª coluna da TABELAB e retorna o valor na coluna BD.

Resumindo, havendo K & i, BC & i e BD & i serão preenchidos

Não havendo K & i, Q & i passa a ser referência, BC & i e BD & i serão preenchidos.

O código abaixo não funciona.

Quem puder compartilhar conhecimento para acertar o código, agradeço desde já.

 

Sub PASS_TEST() '***********************************************************

    Dim ROUTER1, ROUTER2, TABELAB 	As Range
    Dim ultLinha        			As Integer
    Dim resultado_procv 			As Variant
    Dim i 							As Integer
    
	Application.ScreenUpdating = False
    
    ultLinha = Sheets("Plan2").Cells(Cells.Rows.Count, 1).End(xlUp).Row
    Set TABELAB = Sheets("REF").Range("a2:c668")
    Set ROUTER1 = Sheets("Plan2").Range("K" & ultLinha)
    Set ROUTER2 = Sheets("Plan2").Range("Q" & ultLinha)
    
    Sheets("Plan2").Select
    
    For i = 2 To ultLinha
      
        If ROUTER1 <> "" Then
            ROUTER1 = Sheets("Plan2").Range("K" & i).Value
            resultado_procv = Application.VLookup(ROUTER1, TABELAB, 2, False)
            Sheets("Plan2").Range("BD" & i).Value = resultado_procv
        ElseIf ROUTER1 = "" Then
            ROUTER1 = Sheets("Plan2").Range("Q" & ultLinha).Value
            resultado_procv = Application.VLookup(Bairro2, TABELAB, 2, False)
            Sheets("Plan2").Range("BD" & i).Value = resultado_procv
        End If
        
    Next i
    
    i = i + 1
    
End Sub

 

  • Solução
Postado

@Martti Boas,

 

Veja se é isto que deseja:
 

Sub PASS_TEST() '***********************************************************

    Dim ROUTER1, ROUTER2, TABELAB   As Range
    Dim ultLinha                    As Integer
    Dim resultado_procv             As Variant
    Dim i                           As Integer
    
    Application.ScreenUpdating = False
    
    ultLinha = Sheets("Plan2").Cells(Cells.Rows.Count, 1).End(xlUp).Row
    Set TABELAB = Sheets("REF").Range("a2:c668")
    
    Sheets("Plan2").Select
    
    For i = 2 To ultLinha
    
    Set ROUTER1 = Sheets("Plan2").Range("K" & i)
    Set ROUTER2 = Sheets("Plan2").Range("Q" & i)
      
        If ROUTER1 <> "" Then
            resultado_procv = Application.VLookup(ROUTER1, TABELAB, 2, False)
            Sheets("Plan2").Range("BC" & i).Value = resultado_procv
            resultado_procv = Application.VLookup(ROUTER1, TABELAB, 3, False)
            Sheets("Plan2").Range("BD" & i).Value = resultado_procv
        ElseIf ROUTER1 = "" Then
            resultado_procv = Application.VLookup(ROUTER2, TABELAB, 2, False)
            Sheets("Plan2").Range("BC" & i).Value = resultado_procv
            resultado_procv = Application.VLookup(ROUTER2, TABELAB, 3, False)
            Sheets("Plan2").Range("BD" & i).Value = resultado_procv
        End If
        
    Next i
    
End Sub

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...