Melhorando a função PROCV

Conteúdo

Como embalar corretamente um paraquedas?

Beneficiar. Edição 2, revisada.

Digamos que temos a seguinte tabela de pedidos:

Melhorando a função PROCV

Precisamos saber, por exemplo, qual foi o valor da terceira ordem de Ivanov ou quando Petrov executou seu segundo negócio. A função VLOOKUP integrada só pode pesquisar a primeira ocorrência do sobrenome na tabela e não nos ajudará. Perguntas como "Quem era o gerente do pedido número 10256?" também permanecerá sem resposta, tk. o VLOOKUP embutido não é capaz de retornar valores das colunas à esquerda da pesquisa.

Ambos os problemas são resolvidos de uma só vez – vamos escrever nossa própria função que procurará não apenas a primeira, mas, no caso geral, a enésima ocorrência. Além disso, poderá pesquisar e produzir resultados em qualquer coluna. Vamos chamá-lo, digamos, PROCV2. 

Abra o Editor do Visual Basic pressionando ALT+F11 ou selecionando no menu Serviço – Macro – Editor do Visual Basic (Ferramentas — Macro — Editor do Visual Basic), insira um novo módulo (menu Inserir - Módulo) e copie o texto desta função para lá:

Função VLOOKUP2(Table As Variant, SearchColumnNum As Long, SearchValue As Variant, _ N As Long, ResultColumnNum As Long) Dim i As Long, iCount As Long Selecione Case TypeName(Table) Case "Range" Para 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 Case "Variant()" Para i = 1 Para UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Table(i, ResultColumnNum) Exit For End If Next i End Select End Function  

Feche o Editor do Visual Basic e retorne ao Excel.

Agora através Inserir – Função (Inserir - Função) na categoria Usuário definido (Usuário definido) você pode encontrar nossa função VLOOKUP2 e usá-la. A sintaxe da função é a seguinte:

=VLOOKUP2(tabela; número_da_coluna_onde_nós procuramos; valor_procurado; N; número_da_coluna_de_para_obter_valor)

Agora as limitações da função padrão não são um obstáculo para nós:

Melhorando a função PROCV

PS Agradecimentos especiais ao The_Prist por melhorar a função para que possa pesquisar em livros fechados.

  • Localizando e substituindo dados de uma tabela para outra usando a função VLOOKUP
  • “Left VLOOKUP” usando as funções INDEX e MATCH

 

Deixe um comentário