Vlookup – Múltiplos Resultados com VBA
Vlookup de Texto
A função Vlookup padrão pode ser usada para localizar um valor em uma tabela:
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:
>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!