Da mesma forma que temos Índice e Correspondência na planilha como funções de pesquisa, também podemos usar as funções de Correspondência no VBA como uma função de pesquisa, esta função é uma função de planilha e é acessada pelo aplicativo. método de planilha e como é uma função de planilha, os argumentos para a função Match são semelhantes aos da função de planilha.
Função VBA Match
A função VBA Match procura a posição ou o número da linha do valor de pesquisa na matriz da tabela, ou seja, na tabela principal do Excel.
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_2.png.webp)
Em uma planilha, as funções de pesquisa são parte integrante do Excel. Algumas das funções de pesquisa importantes são VLOOKUP, HLOOKUP, INDEX e MATCH. Infelizmente, não temos essas funções como funções VBA. No entanto, podemos usá-los como funções de planilha no VBA.
Neste artigo, mostrarei como usar uma das funções de pesquisa de planilha MATCH no VBA como uma função de planilha.
Como usar a função MATCH no VBA Excel?
Mostraremos um exemplo simples de uso da função Excel MATCH no VBA.
Exemplo 1
No VBA, podemos usar esta fórmula MATCH no Excel como uma função de planilha. Siga as etapas abaixo para usar a função MATCH em VBA.
Etapa 1: Crie um subprocedimento dando um nome de macro.
Código:
Sub Match_Example1 ()
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_3.png.webp)
Passo 2: Na célula E2, precisamos do resultado, então inicie o código como Faixa (“E2”). Valor =
Código:
Sub Match_Example1 () Intervalo ("E2"). Valor = End Sub
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_4.png.webp)
Etapa 3: Em E2, o valor da célula deve ser o resultado da fórmula MATCH. Portanto, para acessar a função VBA MATCH, precisamos primeiro usar a propriedade “WorksheetFunction”. Nesta propriedade, obteremos toda a lista de funções da planilha disponível.
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_5.png.webp)
Etapa 4: Selecione a função MATCH aqui.
Código:
Sub Match_Example1 () Intervalo ("E2"). Value = WorksheetFunction.Match (End Sub
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_6.png.webp)
Etapa 5: agora, o problema começa porque não obtemos o nome exato da sintaxe. Em vez disso, obtemos sintaxe como “Arg1, Arg2, Arg3” assim. Portanto, você precisa ter certeza absoluta das sintaxes aqui.
Nosso primeiro argumento é LOOKUP VALUE. Nosso VALOR DE PROCURA está na célula D2, então selecione a célula como Faixa (“D2”). Valor .
Código:
Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, End Sub
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_7.png.webp)
Etapa 6: O segundo argumento é o Table Array. Nosso intervalo de matriz de tabela é de A2 a A10. Portanto, selecione o intervalo como “Intervalo (“ A2: A10 ”)”
Código:
Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), End Sub
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_8.png.webp)
Etapa 7: Agora, o argumento final é MATCH TYPE. Precisamos de uma correspondência exata, então insira o valor do argumento como zero.
Código:
Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), 0) End Sub
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_9.png.webp)
Execute a macro e obteremos a posição de qualquer nome do ano que esteja na célula D2.
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples.gif)
Exemplo # 2 - VBA Match de outra planilha
Suponha que o mesmo conjunto de dados acima esteja em duas planilhas diferentes. Por exemplo, a matriz da tabela está no nome da planilha chamada “Folha de dados” e o valor de pesquisa está no nome da planilha chamado “Folha de resultados”.
Nesse caso, precisamos nos referir às planilhas por seu nome antes de nos referirmos aos intervalos. Abaixo está o conjunto de códigos com nomes de planilhas.
Código:
Sub Match_Example2 () Sheets ("Result Sheet"). Range ("E2"). Value = WorksheetFunction.Match (Sheets ("Result Sheet"). Range ("D2"). Value, Sheets ("Data Sheet"). Intervalo ("A2: A10"), 0) End Sub
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_10.png.webp)
Exemplo # 3 - Função de correspondência VBA com loops
Se o resultado que queremos em uma única célula, não há problema, mas se o resultado tiver que vir em mais de uma célula, então precisamos usar um loop VBA para obter o resultado em todas as células.
Suponha que você tenha dados como este.
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_11.png.webp)
Nesses casos, é uma tarefa hercúlea escrever códigos longos, então mudamos para loops. Abaixo está o conjunto de códigos que fará o trabalho para nós.
Código:
Sub Match_Example3 () Dim k As Integer For k = 2 To 10 Cells (k, 5) .Value = WorksheetFunction.Match (Cells (k, 4) .Value, Range ("A2: A10"), 0) Next k End Sub
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_12.png.webp)
Este conjunto de códigos obterá o resultado em apenas um piscar de olhos.
![](https://cdn.know-base.net/9794060/vba_match_how_to_use_match_function_in_vba_excel_examples_2.gif)