Vlookup - Vários resultados com VBA - Exemplos de código VBA

Vlookup Text

A função Vlookup padrão pode ser usada para encontrar um valor dentro de uma tabela:

E usaríamos VLOOKUP assim:

= PROCV (A1: 10, "Cachorro", 2, FALSO)

para fornecer o valor 30.

Porém, nesta lista, vemos que Dog ocorre 3 vezes. A função VLOOKUP padrão retornará apenas o valor associado ao primeiro item da lista. Ele não retornará 125 ou 9.250 com a 2ª ou 3ª instância de "cachorro" nesta lista.

Vlookup Multiple Results

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:

Função Find_nth_Occurrence (Column_Range As Range, Expression As String, Occ As Integer) As Double Dim Cell Dim Occurrences_to_date As Integer Find_nth_Occurrence = 1000000 Occurrences_to_date = 0 Para Cada Célula Em Column_Range If Cell.Value = Expression Then Occurrences_to_date Then Find_nth_Occurrence = Cell.Offset (0, 1) .Value End If End If Next Cell End Function

A principal diferença entre esta função e a função VLOOKUP padrão é que, neste caso, o intervalo é o único intervalo de rótulos - não todo o intervalo de dados.
A seguir está uma sub-rotina que chama essa função com base no evento de clique de um botão de comando. Ele procura no intervalo A1: A8 na Folha2, a 3ª instância da palavra Cachorro:

Private Sub CommandButton1_Click () Dim Answer As Double Answer = Find_nth_Occurrence (Sheets ("Sheet2"). Range ("A1: A8"), "Dog", 3) MsgBox AnswerEnd Sub

A variável “Answer” armazena o resultado da função - que é então exibido em uma Msgbox na tela:

> No entanto, se a palavra não puder ser encontrada na lista ou a frequência não ocorrer, por exemplo, não houver uma 5ª ocorrência da palavra “Cachorro”, então o valor de 1.000.000 é retornado: -
Resposta = Find_nth_Occurrence (Sheets (“Sheet2”). Range (“A1: A8”), “Dog”, 5)
Ou
Resposta = Find_nth_Occurrence (Sheets (“Sheet2”). Range (“A1: A8”), “Horse”, 2)

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave