A função integrada VLOOKUP é uma das funções mais poderosas em Excel. Mas tem uma desvantagem significativa - encontra apenas a primeira ocorrência do valor desejado na tabela e apenas na coluna da extrema direita. Mas se você precisar do 2º, do 3º e não do último?
Digamos que temos uma tabela de empréstimos processados como esta:
Precisamos saber, por exemplo, qual foi o valor do terceiro empréstimo concedido a Mike ou quando John executou seu segundo contrato. Função integrada VLOOKUP sabe pesquisar apenas a primeira ocorrência de um nome na tabela e não vai nos ajudar.
Vamos escrever nossa função, que pesquisará não apenas a primeira, mas também qualquer (enésima) ocorrência subsequente. Vamos chamá-lo, por exemplo, de VLOOKUP2.
Abra o cardápio Serviço - Macro - Editor Visual Basic , insira o novo módulo (cardápio Insert - Module ) e copie o texto desta função lá:
Function VLOOKUP2(Table As Range, _
SearchColumnNum As Integer, _
SearchValue As Variant, _
N As Integer, _
ResultColumnNum As Integer)
'moonexcel.com.ua
Dim i As Integer
Dim iCount As Integer
For i = 1 To Table.Rows.Count
If Table.Cells(i, SearchColumnNum) = SearchValue Then
iCount = iCount + 1
End If
If iCount = N Then
VLOOKUP2 = Table.Cells(i, ResultColumnNum)
Exit For
End If
Next i
End Function
Feche o editor Visual Basic e retorne para Excel.
Agora em Assistentes de função na categoria Usuário definido você pode encontrar nossa função VLOOKUP2 e usá-la. A sintaxe da função é a seguinte:
=PROCV2( mesa ; coluna_número_onde_nós_pesquisamos ; valor_pesquisado; número de entrada ; coluna_número_de_qual_tiramos_o_valor )
Ou seja, para saber o valor do terceiro empréstimo concedido a Mike, você precisará inserir:
=VLOOKUP2(A2:A19; 1; "Mike"; 3; 4)