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 Coincidir en lugar de una de las funciones de búsqueda cuando necesite la posición de un elemento de un rango en lugar del elemento en sí.

Sintaxis

más sencilla.Coincidir (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: el valor que usa para encontrar el valor que desea en una tabla.
Arg2 Obligatorio Variant Lookup_array: un rango contiguo de celdas que contiene 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 busca un número en una guía telefónica, está usando 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, Coincidir busca el valor más largo que sea 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, Coincidir busca el primer valor que sea exactamente igual a lookup_value. El argumento de matriz_buscada puede estar en cualquier orden. Ten en cuenta que Coincidir no distingue mayúsculas de minúsculas.

Si match_type es -1, Coincidir 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.

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

Coincidir no distingue entre letras mayúsculas y minúsculas al hacer coincidir valores de texto.

Si Match no puede encontrar 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, este ejemplo busca en todo el libro un valor coincidente. 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.