Share via


Método WorksheetFunction.Match (Excel)

Devuelve la posición relativa de un elemento en una matriz que coincida con un valor especificado en el orden indicado. Use Match en lugar de una de las funciones Lookup cuando necesite la posición de un elemento en un rango en lugar del propio elemento.

Sintaxis

expresión. Coincidencia (Arg1, Arg2, Arg3)

Expresión Variable que representa un objeto WorksheetFunction .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
Arg1 Obligatorio Variant Lookup_value: valor que se usa para buscar el valor que desea en una tabla.
Arg2 Obligatorio Variant Lookup_array: un rango contiguo de celdas que contienen posibles valores de búsqueda. El argumento de matriz_buscada debe ser una matriz o una referencia a una matriz.
Arg3 Opcional Variant Match_type: el número -1, 0 o 1. El tipo de coincidencia especifica cómo Microsoft Excel compara el argumento de valor_búsqueda con los valores de la matriz_buscada.

Valor devuelto

Double

Comentarios

Lookup_value es el valor que desea que coincida en lookup_array. Por ejemplo, cuando se busca un número en una libreta de teléfonos, se usa el nombre de la persona como valor de búsqueda, pero el número de teléfono es el valor que desea.

El argumento de valor_buscado puede ser un valor (número, texto o valor lógico) o una referencia de celda a un número, texto o valor lógico.

Si match_type es 1, Match busca el valor más grande que es menor o igual que lookup_value. El argumento de matriz_buscada debe especificarse en orden ascendente: ...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE.

Si match_type es 0, Match busca el primer valor que es exactamente igual a lookup_value. El argumento de matriz_buscada puede estar en cualquier orden. Tenga en cuenta que La coincidencia no distingue mayúsculas de minúsculas.

Si match_type es -1, Match busca el valor más pequeño que sea mayor o igual que lookup_value. El argumento de matriz_buscada debe especificarse en orden descendente: TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ..., etc.

Si se omite el argumento de tipo_de_coincidencia, se presupone que es 1.

Match devuelve la posición del valor coincidente dentro de lookup_array, no el propio valor. Por ejemplo, MATCH("b",{"a","b","c"},0) devuelve 2, la posición relativa de "b" dentro de la matriz {"a","b","c"}.

La coincidencia no distingue entre mayúsculas y minúsculas al hacer coincidir los valores de texto.

Si Match no se encuentra correctamente en la búsqueda de una coincidencia, devuelve el valor de error #N/A.

Si el argumento de tipo_de_coincidencia es 0 y el argumento de valor_buscado es texto, se pueden usar los caracteres comodín de signo de interrogación (?) y asterisco (*) en el argumento de valor_buscado. El signo de interrogación corresponde a cualquier carácter único, mientras que un asterisco corresponde a cualquier secuencia de caracteres. Si desea buscar un signo de interrogación o asterisco reales, escriba una tilde (~) delante del carácter.

Ejemplo:

Para cada valor de la primera columna de la primera hoja de cálculo, en este ejemplo se busca un valor coincidente en todo el libro. Si la macro encuentra un valor coincidente, establece el valor original de la primera hoja de cálculo en negrita.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.