Vlookup – Múltiplos Resultados com VBA

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 23, 2023

Vlookup de Texto

A função Vlookup padrão pode ser usada para localizar um valor em uma tabela:

procv tabela referencia
E usaríamos o VLOOKUP da seguinte forma:

=VLOOKUP("Cão",A1:B10,2,FALSE)

para obter o valor 30.

Entretanto, nessa lista, vemos que Cão ocorre 3 vezes. A função VLOOKUP padrão retornará apenas o valor associado ao primeiro item dessa lista. Ela não retornará o valor 125 ou 9.250 com a segunda ou terceira instância de “Cão” nessa lista.

Resultados Múltiplos do Vlookup

A função a seguir nos permite especificar um intervalo, uma expressão a ser pesquisada e a instância (número do resultado) e, em seguida, retornar o valor correspondente

Function Encontrar_nesima_ocorrencia(Intervalo_Coluna As Range, Expressao As String, Occ As Integer) As Double
Dim Cell
Dim Ocorrencias_ate_data As Integer

Encontrar_nesima_ocorrencia = 1000000

Ocorrencias_ate_data = 0

For Each Cell In Intervalo_Coluna
   If Cell.Value = Expressao Then
      Ocorrencias_ate_data = Ocorrencias_ate_data + 1
      If Ocorrencias_ate_data = Occ Then
         Encontrar_nesima_ocorrencia = Cell.Offset(0, 1).Value

      End If
    End If
Next Cell

End Function

A principal diferença entre essa função e a função VLOOKUP padrão é que, nesse caso, o intervalo é apenas o intervalo de rótulos, e não todo o intervalo de dados.
A seguir, uma sub-rotina que chama essa função com base no evento de clique de um botão de comando. Ela procura no intervalo A1:A8 da Planilha2 a terceira instância da palavra Cão:

Private Sub CommandButton1_Click()
Dim Resposta As Double
Resposta = Encontrar_nesima_ocorrencia(Sheets("Planilha2").Range("A1:A8"), "Cão", 3)
MsgBox Resposta
End Sub

A variável “Resposta” armazena o resultado da função, que é então exibido em uma MsgBox na tela:

botao comando resultado
>Entretanto, se a palavra não puder ser encontrada na lista ou se a frequência não ocorrer, por exemplo, se não houver uma quinta instância da palavra “Cão”, o valor de 1.000.000 será retornado :-
Resposta = Encontrar_nesima_ocorrencia(Sheets(“Planilha2”).Range(“A1:A8”), “Cão”, 5)
Ou
Resposta = Encontrar_nesima_ocorrencia(Sheets(“Planilha2”).Range(“A1:A8”), “Cavalo”, 5)

Codificação VBA facilitada

Pare de procurar códigos VBA on-line. Saiba mais sobre o AutoMacro – um construtor de código VBA que permite que os iniciantes codifiquem procedimentos do zero com conhecimento mínimo de codificação e com muitos recursos que economizam tempo para todos os usuários!

alt text

Saiba mais!

<<Retornar aos exemplos de VBA

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA