PROCV no VBA: Como Fazer?
Quer aprender a usar a função PROCV no VBA? Então você está no lugar certo!
Se você já usa o Excel algum tempo, então já deve ter notado que a função PROCV é uma das funções mais usadas entre os usuários. Mas você sabia que também é possível usá-la através do VBA?
No VBA, a funcionalidade desta função é semelhante ao tradicional uso em planilhas e como se trata de uma função nativa do Excel, é necessário usar o método Application.WorksheetFunction junto com os argumentos já conhecidos desta função.
Se interessou pelo assunto? Então confira os detalhes a seguir e veja como usar esta função no VBA para automatizar ainda mais seu trabalho.
Função PROCV no VBA
Como você já deve saber, a função PROCV no Excel é usada para pesquisar um valor em uma matriz e retornar seu valor correspondente de outra coluna. O valor a ser pesquisado deve estar presente na primeira coluna. Também é necessário mencionar se deve procurar uma correspondência exata ou uma correspondência aproximada.
A função PROCV no Excel tem a seguinte sintaxe:
PROCV(valor_procurado;matriz_tabela;núm_índice_coluna;procurar_intervalo)
Onde:
- valor_procurado:É o valor que você deseja pesquisar;
- matriz_tabela: É o intervalo de células onde você deseja encontrar o valor procurado;
- núm_índice_coluna:É o número da coluna onde está o valor a ser encontrado.
- procurar_intervalo:Aqui você escolhe se você quer encontrar exatamente o que você está buscando ou se algo aproximado atende a sua necessidade caso não encontre exatamente o que está buscando. Escolha 0/FALSO para obter a correspondência exara ou 1/VERDADEIRO para retornar a correspondência aproximada.
No código VBA, a função PROCV deve ser usada como:
Application.WorksheetFunction.vlookup(lookup_value, table_array, col_index_num, range_lookup)
Como usar a função PROCV no VBA?
Para que você possa compreender na prática como usar a função PROCV no VBA, confira abaixo alguns exemplos:
Exemplo 1: PROCV no VBA com resultado em MsgBox
Neste primeiro exemplo, suponha que você tenha uma tabela com o ID , Nome e Nota de cada aluno de uma classe.
Neste caso, você deseja pesquisar as notas obtidas pelo um aluno com ID 987. Para pesquisar o valor, siga as seguintes etapas abaixo:
1. Acesse a guia Desenvolvedor > Visual Basic (Se preferir, use o atalho Alt + F11)
Caso não tenha a guia Desenvolvedor habilitada em seu Excel, confira aqui como habilitá-la.
2. Na janela do VBA, acesse a guia Inserir e clique em Módulo.
3. Agora, insira a função PROCV. O código a seguir pode ser usado (adapte-o conforme a sua necessidade).
Sub PROCV_Ex1() Dim aluno_id As Long Dim nota As Long aluno_id = 987 Set intervalo = Range("A2:C7") nota = Application.WorksheetFunction.VLookup(aluno_id, intervalo, 3, False) End Sub
- Em primeiro lugar, definimos uma variável id de aluno, que é o valor a ser pesquisado. Por isso, definimos:
aluno_id = 987
- Em seguida, definimos o intervalo para o argumento matriz_tabela. Como nossos dados estão presentes nas células B2:C7, definimos um intervalo como:
Set intervalo = Range(“B2:C7”)
- Por fim, inserimos a função PROCV (deve ser inserida em Inglês) usando Worksheet function em uma variável nota:
nota = Application.WorksheetFunction.Vlookup(aluno_id, intervalo, 3, False)
- Para mostrar o resultado da função PROCV, usaremos uma caixa de mensagem com o seguinte comando:
MsgBox “O aluno com ID:” & aluno_id & ” obteve a nota” & nota & “
Ele retornará: O aluno com ID:987 obteve a nota 8
Agora, clique no botão executar na Janela do VBA.
Você notará que uma caixa de mensagem aparecerá na planilha do Excel.
Exemplo 2: PROCV no Excel com resultado na célula
Neste segundo exemplo, suponha que você tenha os dados sobre os nomes dos funcionários e seus salários. Esses dados são fornecidos nas colunas A e B. Agora, você precisa usar a função PROCV no VBA de modo que, dado o nome do funcionário em uma célula, E2, o salário do funcionário seja retornado na célula 0 F2.
Para criar a função PROCV no VBA neste caso, basta seguir as etapas:
1. Defina o intervalo em que os valores estão presentes, ou seja, colunas A e B.
Set intervalo = Range (“A:B”)
2. Defina o nome do funcionário e insira o nome da célula F2.
Set funcionário = Range (“E2”)
3. Defina o salário como célula F2.
Set salário = Range (“F2”)
4. Agora, chame a função PROCV usando Worksheet Function no VBA e insira-a na variável salário.value. Isso retornará o valor (saída da função Vlookup) na célula F2. A seguinte sintaxe pode ser usada:
salário.Value = Application.WorksheetFunction.VLookup(funcionário, intervalo, 2, False)
5. Agora, execute o módulo e observe que célula F2 será preenchida com o salário do funcionário após a execução do código VBA.
Observação: Caso precise alterar o valor da célula F2, será necessário executar novamente o código para obter o novo resultado da função PROCV.
Exemplo 3: PROCV no VBA com dois critérios
Neste terceiro exemplo, suponha que você tenha os dados do funcionário de sua empresa, tendo sua Matrícula, Nome, Departamento e Salário. Usando a função PROCV no VBA, você deseja obter os detalhes do salário de um funcionário usando seu nome e departamento.
Como a função PROCV pesquisa o valor_procurado em apenas uma única coluna, que é a primeira coluna da matriz_tabela, é necessário que você primeiro faça uma coluna auxiliar contendo o “Nome” e o “Departamento” de cada funcionário. Veja o exemplo abaixo:
Vamos agora escrever o código, de modo que a coluna A contenha os valores da coluna C (nome) e da coluna D (departamento).
1. Defina três variáveis nome, departamento e valor_procurado como uma string. Defina uma variável chamada salário como Long.
2. Utilize uma caixa de entrada (Inputbox) para capturar o nome do funcionário
funcionário = InputBox(“Insira o nome do funcionário”)
3. Utilize uma caixa de entrada (Inputbox) para capturar o departamento
departamento = InputBox(“Insira o departamento”)
4. Atribua o Funcionário e o Departamento com “_” como separador para a variável valor_procurado usando a seguinte sintaxe:
valor_procurado = funcionário & “_” & departamento
5. Escreva da função PROCV para procurar o valor_procurado no intervalo A2:E20 e o retornar o resultado na variável salário.
salário = Application.WorksheetFunction.VLookup(valor_procurado, Range(“A:E”), 5, False)
6. Para exibir o salário em uma caixa de mensagem, use a sintaxe:
MsgBox “O salário do funcionário é R$” & salário
Ao executar o código, observe que o VBA exibirá uma caixa de entrada para você inserir o nome do funcionário.
Em seguida, outra caixa de entrada para inserir o departamento.
Ao preencher ambos os campos, o Excel retornará o salário do funcionário em uma caixa de mensagem. Veja o exemplo abaixo:
Importante:
Se a função PROCV não encontrar algum funcionário com o nome e departamento, então o VBA retornará um erro.
Suponha que você esteja pesquisando pela funcionária “Vanessa” e o departamento “TI”, ele retornará o erro de tempo de execução ‘1004’, pois não conseguirá encontrar o valor_procurando na lista.
Para resolver esse problema, você pode especificar no código que, nesse tipo de erro, retorne a mensagem “Valor não encontrado”. Para fazer isso, basta seguir as etapas:
1. Antes de usar a sintaxe vlookup, use o seguinte código-
On Error GoTo Mensagem Check:
O código de rastreamento (de Check:) será monitorado e, se receber um erro, irá para a instrução “Mensagem”.
No final do código (Antes de End Sub), especifique que se ocorrer o erro de tempo de execução ‘1004’, em seguida, deve ser mostrada a caixa de mensagem “Dados do funcionário não presentes”. Isso pode ser feito usando a sintaxe:
Mensagem: If Err.Number = 1004 Then MsgBox ("Dados do funcionário não presentes") End If
Detalhes para se lembrar:
- A função PROCV no VBA pode ser chamada no Excel usando o objeto WorksheetFunction.
- A sintaxe da função PROCV permanece a mesma no Excel VBA. Apenas é necessário usar a função em Inglês em vez de Português. Este erro pode ser gerenciado usando uma instrução GoTo se retornar um erro.
Baixe aqui a planilha com os exemplos apresentados neste tutorial.
Confira também as seguintes dicas de Excel VBA:
- Como Copiar e Colar no VBA – Passo a Passo
- Erros no VBA Excel – Tudo que você precisa saber!
- Como Usar If Then Else no VBA – Passo a Passo
- Variáveis no VBA Excel – Guia Completo
- Loops VBA no Excel: For Next, Do While, Do Until, For Each (Com Exemplos)
- Como Aprender VBA? Um Guia para Iniciantes
- Como manipular planilhas do Excel com o VBA (com exemplos)
E então, o que achou da dica para usar a função PROCV no VBA? Caso tenha ficado com alguma dúvida, basta deixar o seu comentário abaixo.