Função de correspondência VBA do Excel

A Função de correspondência do VBA procura a posição ou o número da linha do valor da pesquisa na matriz da tabela, ou seja, na tabela principal do Excel. Por exemplo, VLOOKUP, HLOOKUP, MATCH, INDEX, etc. Essas são as funções de pesquisa mais importantes que outras. Lamentavelmente, não temos as mesmas funções disponíveis no VBA para facilitar as coisas. No entanto, podemos usar essas funções como funções de planilha sob o script VBA para facilitar nossa vida.

Hoje, estamos prestes a aprender a função MATCH, que pode ser usada como uma função de planilha no VBA.

A correspondência do VBA tem o mesmo uso que a fórmula da correspondência no Excel. Essa função no MS Excel VBA encontra uma correspondência em uma matriz com referência ao valor de pesquisa e imprime sua posição. Essa função se torna útil quando você precisa avaliar os dados com base em determinados valores. Por exemplo, o VBA MATCH é útil se você tiver os dados de salário dos funcionários e precisar descobrir a posição numérica de um funcionário em seus dados que tenha salário menor que / maior que / igual a um determinado valor. É realmente útil na análise dos dados e também uma linha de código pode automatizar as coisas para você.

Sintaxe da função de correspondência no Excel VBA

O VBA Match possui a seguinte sintaxe:

Onde,

  • Arg1 - Lookup_value - O valor que você precisa procurar em uma determinada matriz.
  • Arg2 - Lookup_array - uma matriz de linhas e colunas que contêm o possível Lookup_value.
  • Arg3 - Match_type - O tipo de correspondência que assume o valor -1, 0 ou 1.

Se match_type = -1 significa que a função MATCH descobrirá o menor valor que é maior ou igual ao valor da pesquisa. Para que isso ocorra, a matriz de pesquisa deve ser classificada em ordem decrescente.

Se match_type = 0 significa que a função MATCH descobrirá o valor exatamente igual ao do lookup_value.

Se match_type = +1, significa que a função MATCH descobrirá o maior valor que é menor ou igual ao lookup_value. Para que isso aconteça, a matriz de pesquisa deve ser classificada em ordem crescente. O valor padrão para o tipo de correspondência é +1.

Como usar a função de correspondência do Excel VBA?

Vamos aprender como usar uma função VBA Match Excel com alguns exemplos.

Você pode fazer o download deste modelo do VBA Match Excel aqui - Modelo do VBA Match Excel

Função de correspondência do VBA - exemplo # 1

Suponha que tenhamos dados como mostrado abaixo:

Precisamos descobrir quem nesta lista tem salário de € 30.000 junto com a posição no Excel.

Embora neste conjunto de dados possamos configurá-lo manualmente, pense em uma imagem mais ampla, e se você tiver milhões de linhas e colunas?

Siga as etapas abaixo para usar a função MATCH no VBA.

Etapa 1: defina um subprocedimento, atribuindo um nome à macro.

Código:

 Sub exmatch1 () End Sub 

Etapa 2: Agora, queremos que nossa saída seja armazenada na célula E2. Portanto, comece a escrever o código como Intervalo (“E2”).

Isso define o intervalo de saída para o nosso resultado.

Código:

 Sub exmatch1 () Intervalo ("E2"). Valor = Final Sub 

Etapa 3: Use o WorksheetFunction para poder usar as funções do VBA.

Código:

 Sub exmatch1 () Intervalo ("E2"). Valor = PlanilhaFunção End Sub 

Etapa 4: WorksheetFunction tem uma variedade de funções que podem ser acessadas e usadas no VBA. Após “WorksheetFunction”, coloque um ponto (.) E então você poderá acessar as funções. Escolha a função MATCH na lista suspensa.

Código:

 Sub exmatch1 () Intervalo ("E2"). Valor = WorksheetFunction.Match End Sub 

Etapa 5: agora, forneça os argumentos para a função MATCH. Como Lookup_value. Nosso Lookup_value é armazenado na célula D2, conforme mostrado na captura de tela abaixo. Você pode acessá-lo na função MATCH usando a função Range.

Código:

 Sub exmatch1 () Intervalo ("E2"). Valor = WorksheetFunction.Match (Intervalo ("D2"). Valor, Fim Sub 

Etapa 6: O segundo argumento é Lookup_array. Este é o intervalo da tabela dentro do qual você deseja descobrir a posição do Lookup_value. No nosso caso, é (B1: B11). Forneça essa matriz usando a função Range.

Código:

 Sub exmatch1 () Intervalo ("E2"). Valor = WorksheetFunction.Match (Intervalo ("D2"). Valor, Intervalo ("B1: B11"), Fim Sub 

Etapa 7: o último argumento para que esse código funcione é o tipo de correspondência. Queríamos ter uma correspondência exata para Lookup_value em determinado intervalo> Portanto, forneça Zero (0) como um argumento correspondente.

Código:

 Sub exmatch1 () Intervalo ("E2"). Valor = WorksheetFunction.Match (Intervalo ("D2"). Valor, Intervalo ("B1: B11"), 0) End Sub 

Etapa 8: execute esse código pressionando F5 ou o botão Executar e veja a saída.

Você pode ver na célula E2, há um valor numérico (6) que mostra a posição do valor da célula D2 através do intervalo B1: B11.

Exemplo # 2 - Função de correspondência do VBA com loops

É fácil quando você tem apenas um valor para procurar em todo o intervalo. Mas e se você precisar verificar a posição de várias células? Seria difícil para uma pessoa que está adicionando pedir que ela escreva os códigos separados para cada célula.

Nesses casos, a função MATCH pode ser usada com loop (especialmente loop For no nosso caso). Veja as etapas a seguir para ter uma idéia de como usamos a função MATCH com loop.

Etapa 1: defina um subprocedimento atribuindo um nome à macro.

Código:

 Sub Exemplo2 () End Sub 

Etapa 2: defina um número inteiro que possa conter o valor de várias células no loop.

Código:

 Sub Exemplo2 () Dim i Como Inteiro Final Sub 

Etapa 3: Use o loop For no número inteiro para usar os diferentes valores de pesquisa cuja posição pode ser armazenada na coluna E.

Código:

 Sub Exemplo2 () Dim i Como Inteiro Para i = 2 a 6 End Sub 

Etapa 4: Agora, use o mesmo método que usamos no exemplo 1, apenas em vez de Range, usaremos a função Cells e usaremos uma matriz bidimensional (linhas e colunas) em contraste com o primeiro exemplo.

Código:

 Subexemplo2 () Dim i como número inteiro para i = 2 a 6 células (i, 5) .Value = WorksheetFunction.Match (Cells (i, 4) .Value, Range ("B2: B11"), 0) Next i End Sub 

Aqui, Cells (i, 5) .Value = armazena o valor das posições resultantes em cada linha de 2 a 6 (linha i) na coluna E (número da coluna 5). Na função Match, Cells (i, 4) .Values ​​verifica cada Look__value presente nas linhas 2 a 6 da coluna. Esse valor de pesquisa foi pesquisado na matriz B2: B11 na planilha do Excel, onde os dados estão presentes e as posições relativas podem ser armazenadas em cada linha da coluna 5 (coluna E).

Etapa 5: execute esse código pressionando F5 ou o botão Executar simultaneamente e veja o resultado. Quase puxará a mágica em um pedaço de código com uma única linha.

Neste artigo, aprendemos como podemos usar a função MATCH no VBA como um caso especial de WorksheetFunction.

Coisas para lembrar

  • Lookup_value pode ser número / texto / valor lógico ou pode ser uma referência de célula para um número, texto ou valor lógico.
  • Por padrão, Match_type pode ser considerado como 1, se omitido / não mencionado.
  • Como semelhante à função MATCH do Excel, o VBA MATCH também fornece a posição relativa de um Lookup_value em Lookup_array e não o valor em si.
  • Se uma correspondência não for encontrada, uma célula relativa do Excel será preenchida com # N / A.
  • Se a função MATCH for usada nos valores de Texto, ela não poderá diferenciar entre maiúsculas e minúsculas. Por exemplo, Lalit e lalit são iguais. O mesmo acontece com LALIT e lalit.
  • Caracteres curinga podem ser usados ​​se você estiver descobrindo a correspondência exata (ou seja, o tipo de correspondência é zero). Asterisco de caractere curinga (*) pode ser usado para descobrir uma série de caracteres. Enquanto um ponto de interrogação (?) Pode ser usado para descobrir um único caractere.

Artigos recomendados

Este é um guia para a função de correspondência do VBA. Aqui discutimos o VBA Match e como usar a função de correspondência do VBA do Excel, além de exemplos práticos e modelo de excel para download. Você também pode consultar nossos outros artigos sugeridos -

  1. Guia completo do VBA On Error
  2. Como usar o formato de número VBA?
  3. Função VBA VLOOKUP com exemplos
  4. Criando função VBA no Excel
  5. Função de correspondência do Excel (exemplos)

Categoria: