Método WorksheetFunction.Match (Excel)

Retorna a posição relativa de um item em uma matriz que corresponde a um valor especificado em uma ordem especificada. Use Match em vez de uma das funções De pesquisa quando precisar da posição de um item em um intervalo em vez do item em si.

Sintaxe

expressão. Correspondência (Arg1, Arg2, Arg3)

Expressão Uma variável que representa um objeto WorksheetFunction .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
Arg1 Obrigatório Variantes Lookup_value: o valor que você usa para encontrar o valor desejado em uma tabela.
Arg2 Obrigatório Variant Matriz_procurada: um intervalo contíguo de células que contêm os valores de pesquisa possíveis. Matriz_procurada deve ser uma matriz ou uma referência de matriz.
Arg3 Opcional Variant Tipo_correspondência: o número -1, 0 ou 1. Match_type especifica como o Microsoft Excel encontra o Lookup_value correspondente em Lookup_array.

Valor de retorno

Double

Comentários

Lookup_value é o valor que você deseja corresponder em lookup_array. Por exemplo, ao pesquisar um número em uma lista telefônica, você está usando o nome da pessoa como o valor de pesquisa, mas o número de telefone é o valor desejado.

Lookup_value pode ser um valor (número, texto ou valor lógico) ou uma referência de célula para um número, texto ou valor lógico.

Se match_type for 1, Match encontrará o maior valor menor ou igual a lookup_value. Lookup_array deverá ser posicionado em ordem crescente:...-2, -1, 0, 1, 2,..., A-Z, FALSE, TRUE.

Se match_type for 0, Match encontrará o primeiro valor exatamente igual a lookup_value. Lookup_array poderá estar em qualquer ordem. Observe que o Match é insensibilidade de maiúsculas de minúsculas.

Se match_type for -1, Match encontrará o menor valor maior ou igual a lookup_value. Matriz_procurada deve ser colocada em ordem decrescente: VERDADEIRO, FALSO, Z-A... 2, 1, 0, -1, -2... e assim por diante.

Se match_type for omitido, será considerado 1.

Match retorna a posição do valor correspondente dentro de lookup_array, não o valor em si. Por exemplo, MATCH("b",{"a","b","c"},0) retorna 2, a posição relativa de "b" dentro da matriz {"a","b","c"}.

A correspondência não distingue entre letras maiúsculas e minúsculas ao corresponder valores de texto.

Se Match não tiver êxito em encontrar uma correspondência, ela retornará o valor de erro #N/A.

Se match_type for 0 e se lookup_value for texto, então você poderá usar os caracteres curinga, o ponto de interrogação (?) e o asterisco (*), no lookup_value. Um ponto de interrogação corresponde a qualquer caractere único; um asterisco corresponde a qualquer sequência de caracteres. Se você quiser localizar um ponto interrogação ou asterisco real, digite um til (~) antes do caractere.

Exemplo

Para cada valor na primeira coluna da primeira planilha, este exemplo procura um valor correspondente na pasta de trabalho inteira. Se a macro encontrar um valor correspondente, ela definirá o valor original na primeira planilha em negrito.

Sub HighlightMatches()
    Application.ScreenUpdating = False
    
    'Declare variables
    Dim var As Variant, iSheet As Integer, iRow As Long, iRowL As Long, bln As Boolean
       
       'Set up the count as the number of filled rows in the first column of Sheet1.
       iRowL = Cells(Rows.Count, 1).End(xlUp).Row
       
       'Cycle through all the cells in that column:
       For iRow = 1 To iRowL
          'For every cell that is not empty, search through the first column in each worksheet in the
          'workbook for a value that matches that cell value.

          If Not IsEmpty(Cells(iRow, 1)) Then
             For iSheet = ActiveSheet.Index + 1 To Worksheets.Count
                bln = False
                var = Application.Match(Cells(iRow, 1).Value, Worksheets(iSheet).Columns(1), 0)
                
                'If you find a matching value, indicate success by setting bln to true and exit the loop;
                'otherwise, continue searching until you reach the end of the workbook.
                If Not IsError(var) Then
                   bln = True
                   Exit For
                End If
             Next iSheet
          End If
          
          'If you don't find a matching value, don't bold the value in the original list;
          'if you do find a value, bold it.
          If bln = False Then
             Cells(iRow, 1).Font.Bold = False
             Else
             Cells(iRow, 1).Font.Bold = True
          End If
       Next iRow
    Application.ScreenUpdating = True
End Sub

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.