Blog

Postado em em 31 de dezembro de 2022

VBA VLookUp – PROCV pelo VBA e PROCV em Várias Colunas

Hoje eu quero te mostrar como usar o VBA VLookUp para fazer PROCV pelo VBA e ainda utilizar o PROCV em várias colunas!

Vamos ter 2 conteúdos nessa publicação, então vou deixar o link de cada parte para que possa ir direto onde precisa:

Como fazer PROCV pelo VBA de 2 Formas Diferentes

Fala, Impressionadores! Hoje você vai ver duas formas de fazer o PROCV no VBA.

A primeira forma é tentar utilizar as funções do Excel dentro do VBA, e a segunda forma é através de outras estruturas que simulem o PROCV dentro do VBA!

E aí, pronto para aprender essas formas de utilizar essa importante função?

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso Canal do YouTube para mais vídeos!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Abaixo temos um exemplo parecido com aulas anteriores, onde temos IDs dos vídeos aqui do canal da Hashtag no Youtube, e a quantidade de visualizações de cada vídeo.

Temos a disposição de aproximadamente 500 IDs listados. Abaixo temos alguns deles, para ilustrar o exemplo da aula de hoje:

0 10

A seguir temos duas formas de utilizar o PROCV no VBA. Acompanhe com a gente!

Forma 1 – Utilizando a função PROCV do Excel pelo VBA

A primeira forma que apresentamos na aula é a qual chamamos diretamente as funções do Excel no VBA: WorksheetFunction.

Através desse objeto, conseguimos usar as funções do Excel dentro do VBA, para usar de seu potencial dentro dos códigos. Lembrando que os nomes das funções chamadas dentro do VBA são todas escritas em inglês.

Caso você não saiba como utilizar a fórmula PROCV, recomendamos outro post aqui do blog sobre como utilizar essa função no Excel!

Veja o código exemplo abaixo:

Sub vlookupVBA()

Range("E2").Value = WorksheetFunction.VLookup(Range("E1").Value, Range("A:B"), 2, 0)


End Sub

Comentários a respeito do código:

  • Armazenar na célula E2 o resultado da utilização da função PROCV, onde procuraremos o valor que está na célula E1 na matriz A:B, retornando a resposta para a 2ª coluna, com uma procura exata.

Veja o resultado do código:

1 9

Forma 2 – VBA VLookUp através de Estrutura de repetição For Next

A segunda forma de utilizar o PROCV no Excel é através de uma estrutura de repetição For Next.

A seguir apresentamos o código responsável por conseguir fazer a mesma função do PROCV através de outras estruturas, sem utilizar diretamente a função.

Sub vlookupVBA2()

For linha = 2 To 501

    If Range("A" & linha).Value = Range("E1").Value Then

        Range("E2").Value = Range("B" & linha).Value
       Exit For

    End If

Next

End Sub

Comentários a respeito do código acima:

  • Utilizar de uma estrutura de repetição do tipo For, fazendo as ações da linha 2 até a linha 501:
    • Fazer uma verificação imediata no VBA através de uma estrutura de comparação if e else, que vai comparar o valor da célula da coluna A e da linha representada pela variável “linha” (que vai mudando a cada volta) é igual ao valor que estamos procurando, que está na célula E1. Caso seja igual:
      • Armazenar na célula E2 o valor da célula que estiver imediatamente ao lado (na coluna B, na linha em questão) da célula encontrada pela comparação (na linha em questão, na coluna A)
      • Abortar a estrutura de repetição (For) através da instrução Exit For
    • A estrutura vai seguir as comparações até encontrar uma correspondência. .Se não, vai parar na linha 501. Quando encontrar, abortará a estrutura de repetição e seguirá para o fim do código.

Observe o resultado do código do segundo exemplo:

VBA VLookUp

Como atribuir macro a um botão

O código criado tem a possibilidade de ser acionado através de um botão. Ele vai ser responsável por acionar o nosso código, ao clicar no botão.

Para isso, temos que inserir na nossa planilha um retângulo de cantos arredondados. Após isso, você pode personalizar o botão da forma que você queira.

Agora basta associar a macro em questão associada ao botão que deseja tê-lo como acionador, com o botão direito do mouse.

PROCV em Várias Colunas no VBA

Você sabia que é possível criar uma função personalizada PROCV em várias colunas para que você consiga buscar em mais de uma coluna?

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso Canal do YouTube para mais vídeos!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala, galera! Nessa aula eu quero te mostrar como criar sua própria função VBA, isso mesmo como criar função no VBA para te auxiliar!

A ideia dessa aula é criar um PROCV em várias colunas no VBA, pois como você deve saber o PROCV no Excel vai buscar apenas em uma coluna.

Então vamos fazer uma busca em mais de uma coluna no Excel para aprimorar essa busca utilizando o VBA.

Claro que para criar essa função nós vamos utilizar algumas estruturas que você vai aprender. Vamos aprender sobre a estrutura de repetição For Each e a estrutura If no VBA.

Com isso vamos poder criar o PROCV no VBA de forma eficiente e mais aprimorado do que já temos.

E com esse conhecimento você vai poder criar as suas próprias funções para se adequar ao que você precisa quando tiver esse problema e as funções comuns não puderem ajudar!

Function MeuPROCVAula(valor_procurado As Variant, intervalo_procura As Range, intervalo_resposta As Range, Optional intervalo_procura_opcional As Range) As Variant

cont = 1

For Each celula In intervalo_procura

    If celula = valor_procurado Then
       MeuPROCVAula = intervalo_resposta(cont, 1)
       Exit Function
   End If

    cont = cont + 1
Next

If Not (intervalo_procura_opcional Is Nothing) Then
   cont = 1

    For Each celula In intervalo_procura_opcional
       If celula = valor_procurado Then
           MeuPROCVAula = intervalo_resposta(cont, 1)
           Exit Function
       End If   

        cont = cont + 1

    Next
End If

MeuPROCVAula = "Valor não encontrado"

End Function

Explicação da função criada:

  • Vamos propor uma function (função dentro do VBA que pode ser usada no Excel), onde o nome da nossa function é MeuPROCV(Aula), e os argumentos dela são:
    • valor_procurado As Variant: é o número, texto ou data procurada, que será uma variável que recebe qualquer um dos tipos (Variant)
    • intervalo_procura As Range: é o intervalo em que vamos procurar o nosso “valor_procurado”
    • intervalo_resposta As Range: é o intervalo em que vamos retornar, que é outro intervalo de células, onde estará o correspondente ao “valor_procurado”, na mesma linha
    • Optional intervalo_procura_opcional As Range) As Variant: argumento opcional (obrigatoriamente por último) que vai representar um intervalo
    • O resultado da function será um dado de qualquer tipo (Variant)
  • Vamos utilizar um contador auxiliar (cont), que inicia com o valor 1, que vai representar a linha que vai representar o valor de resposta
  • Vamos utilizar de uma estrutura de repetição For Each, a qual abordamos mais detalhadamente em outro post, que vai realizar a pesquisa do “valor_procurado”. Essa estrutura vai olhar célula a célula (parte) do nosso “intervalo_procura” (que é o todo).
  • Faremos uma comparação à cada célula da estrutura de repetição em questão: se (o conteúdo da) a célula for igual ao valor_procurado, faremos algumas ações. Caso não seja, 1 unidade será adicionada à variável “cont” e olharemos para a próxima célula da estrutura de repetição, até que a célula seja encontrada, quando retornaremos uma resposta
  • Achando, vamos dar como resposta para a função MeuPROCV(Aula) o que estiver na linha representada pela variável “cont”, na primeira coluna (por padrão) do nosso “intervalo_resposta”, porque nosso “intervalo_resposta” é uma coluna única (e vai ser retornado o valor dessa única coluna, obrigatoriamente). Retornando algum valor, o código será abortado, pois já temos uma resposta para a function.
  • Não tendo uma resposta, vamos adicionar 1 unidade à variável “cont”, e fazer uma nova pesquisa de célula no “intervalo_procura”
  • Também vamos verificar se o último argumento, opcional está preenchido. Se estiver preenchido (se é falso que intervalo_procura_opcional é nada, ou seja, se há algo nesse argumento), faremos a nova pesquisa no “intervalo_procura_opcional”. Caso não, a resposta será “Valor não encontrado” e o código se encerra. Caso haja, o código fará uma nova procura.
  • Não tendo achado nenhuma resposta no “intervalo_procura” e tendo argumento opcional válido, vamos utilizar da mesma estrutura e lógica e olhar em outro intervalo, o “intervalo_procura_opcional”. Lembrando que para realizar uma nova procura em outro intervalo, usando a mesma variável auxiliar “cont”, devemos fazer com que ela volte ao seu valor original (do começo): 1, para que a região de pesquisa volte ao começo.
  • Não encontrando nada nos dois intervalos, será dada a resposta para a function de “Valor não encontrado”
  • Se encerra a function

Vamos a dois exemplos com a nossa função MeuPROCV (MeuPROCVAula também):

Exemplo 1) Código B737

PROCV em Várias Colunas
Busca em mais de uma coluna no Excel

No exemplo procuramos o código B737 no intervalo de células de C2 a C14.

Queremos retornar o valor da coluna A (de A2 a A14).

A resposta no caso é o Produto L, que está na mesma linha do código B737.

Exemplo 2) Código D296

Criar sua própria função VBA
Criar sua própria função VBA

No exemplo procuramos o código D296 no intervalo de células de C2 a C14. Queremos retornar o valor da coluna A (de A2 a A14).

Como não há D296 na coluna C, vamos procurar ele na coluna D (código substituto).

A resposta no caso é o Produto E, porque ele está na mesma linha do código substituto D296.

OBS: Atalho para conhecer/lembrar dos argumentos criados: Digite o nome da fórmula, “(“ e aperte Ctrl+Shift+A. Resultado:

Imagem0

Conclusão – VBA VLookUp

Nessa aula eu te mostrei como você pode fazer o PROCV dentro do VBA de duas maneiras diferentes e ainda te mostrei como usar o VBA VLookUp para criar um PROCV em várias colunas para facilitar a sua busca.

O primeiro exemplo envolveu a utilização de uma forma idêntica de utilizar o PROCV pelo Excel dentro do VBA: através do objeto WorksheetFunction!

Já o segundo exemplo, envolveu a estrutura If e else no VBA, além de estrutura de repetição do tipo For!

Você já deve ter notado como o VBA é versátil e pode te ajudar em diversas situações, seja para utilizar as próprias funções do Excel ou até mesmo para criar funções personalizadas!

Então mesmo que você não tenha uma função, você pode utilizar o VBA para criar essa função de forma personalizada para te auxiliar a resolver o seu problema!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador