En Google Sheets, el campo MATCH le proporciona la función posición relativa de un elemento dentro de un rango de celdas. Básicamente, si quieres saber la posición de un valor específico dentro de un rango o matriz, MATCH te dirá dónde se encuentra. MATCH es práctico pero bastante básico, pero cuando lo combinas con INDEX, se vuelve muy potente. En Función INDEX MATCH es una alternativa brillante y más dinámica a la función VLOOKUP. Resuelve muchos de los problemas asociados a VLOOKUP.
MATCH
En primer lugar, veamos la función MATCH y cómo funciona en Google Sheets.
Recuerde que MATCH devuelve un posición pero no un valor, por lo que si desea devolver un valor propio, utilice ÍNDICE, HLOOKUP, o VLOOKUP.
En la siguiente instantánea se puede ver que la posición de Evan es 5 dentro del rango de celdas A1 a A6.
¿Qué pasa si colocas las celdas como se muestra en la siguiente instantánea (B4 a B9)?
La posición relativa de Evan sigue siendo 5.
Eso es exactamente para lo que está diseñada la función MATCH - devolver la posición relativa de un elemento (‘Evan’) en un rango de celdas (A1:A6 o B4:B9).
Sintaxis
=MATCH(clave_busqueda, rango, tipo_busqueda)
- buscar_clave - es el artículo que la función MATCH busca dentro del gama de celdas. Puede ser un texto puro (‘Evan’), o una referencia de celda (como A7), o incluso una función que devuelva una cadena o un número (como LEFT(“Mike Johnson”,8) o DATE(2017,1,1))
- gama - es el grupo de celdas donde la función MATCH busca el elemento (search_key). Debe ser una matriz unidimensional, es decir, un rango con una sola columna o una sola fila.
- tipo_búsqueda - es una entrada opcional que indica cómo debe buscar la función MATCH el elemento buscar_clave en el gama. Esto toma tres valores diferentes:
- 1 es el valor por defecto (es decir, cuando no se proporciona ninguna entrada contra tipo_búsqueda). Con esta opción, Google Sheets asume que el rango de celdas está ordenado de forma ascendente y, en consecuencia, devuelve el mayor valor menor o igual que buscar_clave.
- 0 especifica a Google Sheets que debe encontrar una coincidencia exacta. Esta es la opción ideal si el archivo gama de celdas no se clasifica en ningún orden.
- -1, como cabría suponer, es exactamente lo contrario de 1. Esta opción asume que el rango de celdas está ordenado en orden descendente, y devuelve el menor valor mayor o igual que buscar_clave.
Cómo utilizar MATCH en Google Sheets
Eche un vistazo a la siguiente captura de pantalla. En la columna A, tengo un conjunto de datos en orden ascendente (por ejemplo, de menor a mayor). He probado algunas variaciones de la función MATCH en estos datos.
En el primer ejemplo, en la fila 2, he pedido a la función MATCH que busque el ID #1400 escribiendo =Match(1400,A2:A15,1).
La segunda fórmula, en la fila 3, hace lo mismo que la primera, y ambas me dicen que el ID #1400 está en la fila 7.
La diferencia es que en el primer ejemplo, utilicé search_type 1, que se utiliza cuando los datos están en orden ascendente (como es el caso).
La segunda vez, utilicé search_type 0, que se utiliza cuando los datos no están ordenados o cuando sólo se desea una coincidencia exacta. Como los datos estaban ordenados y había una coincidencia exacta para 1400, ambas funciones me dieron el mismo resultado.
En el tercer ejemplo, en la fila 4, le pido a la función MATCH que me busque el ID #1300 escribiendo =Match(1300,A2:A15,0). Utilizo search_type 0 para especificar que quiero una coincidencia exacta. Como no hay ID #1300, obtengo un error.
En el cuarto ejemplo de la fila 5, sin embargo, pregunto lo mismo pero utilizo search_type 1. Aquí, la función sí me da un resultado, indicando que la respuesta está en la fila 4.
Nota sobre MATCH
Una cosa que hay que recordar es que la función MATCH no le dará necesariamente la respuesta más cercana - como puede ver, la fila 4 corresponde al ID #1125.
La siguiente fila, ID #1313, está mucho más cerca del ID #1300 que estaba buscando. Sin embargo, al buscar datos en orden ascendente, la función devuelve el valor más cercano que no sea mayor que la clave_buscada. Por ello, devuelve como resultado la fila 4, no la fila 5.
En el último par de ejemplos, en las filas 6 y 7, en lugar de escribir el código buscar_clave directamente, indico una celda de referencia que contiene el buscar_clave. Lo hago con la función =Coincidencia(D2,A2:A15,1).
En el siguiente ejemplo, mostraré los datos ordenados de forma descendente.
Los ejemplos aquí son los mismos que en la primera imagen, excepto que ahora estoy usando un search_key de -1 en lugar de 1 para reflejar el hecho de que los datos están ordenados en orden descendente.
Fíjese en el ejemplo de la búsqueda del ID #1300: esta vez, la función da como resultado la fila 10, que corresponde al ID #1313, mucho más cerca del 1300 que cuando se hizo lo mismo con los datos ordenados de forma ascendente.
Uso de MATCH con texto
Los ejemplos que hemos mostrado han sido con valores numéricos. ¿Qué le parece utilizar la función MATCH con valores de texto?
Dado que no se pueden definir exactamente los valores ‘menor que’ y ‘mayor que’ para los formularios de texto, suelo utilizar el método tipo_busqueda 0, que indica a Google Sheets que busque una coincidencia exacta. He aquí algunos ejemplos:
Observe cómo el buscar_clave debe ir entre comillas cuando es una cadena de texto, como en el primer ejemplo: =Match(“Eric”,A2:A14,0). Otra cosa que hay que recordar es que cuando se utiliza clave_busqueda 0 para buscar una coincidencia exacta, si no hay coincidencia exacta la función dará un error (como en el primer ejemplo anterior).
He estado utilizando la función MATCH en un diseño vertical porque es lo más común. Pero ciertamente hay ocasiones en las que puede querer usarla para un conjunto de datos horizontales. En el siguiente ejemplo, he hecho precisamente eso.
En este caso, la función MATCH le indica el número de la columna que contiene la variable buscar_clave.
Cómo utilizar la combinación de funciones INDEX MATCH
Quizá el uso más potente de la función MATCH en las Hojas de cálculo de Google sea cuando se utiliza en combinación con la función INDEX para buscar valores. Pero para eso ya existe la función VLOOKUP en Google Sheets, ¿no?
Es cierto, pero la combinación de MATCH e INDEX puede resolver varios problemas que surgen al utilizar VLOOKUP.
Eche un vistazo al siguiente ejemplo de VLOOKUP:
La función VLOOKUP en D2 busca 161 en la columna ‘Emp ID #’ (ya que es la más a la izquierda en el rango A2:B11), y desde la fila donde encuentra el valor 161, obtiene el valor situado en la segunda columna (es decir, la columna B), mientras asume que los datos no están ordenados. Hasta aquí, todo correcto. Pero hay dos problemas críticos cuando se utiliza VLOOKUP en Google Sheets.
Problema 1: Referenciación estática de celdas
¿Qué ocurre si insertas una nueva columna entre la primera y la segunda? Intentémoslo.
Observará que el valor devuelto no es Ethan más. Esto se debe a que VLOOKUP es una función semiestática.
Google Sheets actualizaba el segundo parámetro para reflejar el nuevo rango, pero no cambiaba en consecuencia el índice de columna (tercer parámetro) cuando se añadía una nueva columna antes del parámetro Vendedor columna.
Problema 2: La columna de consulta es siempre la situada más a la izquierda
Es posible que se encuentre en una situación en la que tenga que buscar valores de una columna (Emp ID #) que no sea la situada más a la izquierda, como se muestra a continuación.
En este caso, mover la columna Emp ID # para colocarla más a la izquierda funcionaría. Pero ese no es el método ideal: puede haber especificaciones de diseño o presentación de datos que no le permitan reordenar las columnas. En ese caso, ¿qué se puede hacer? La combinación de funciones MATCH e INDEX viene al rescate. He aquí la sintaxis de la combinación, seguida de algunos ejemplos.
INDEX(referencia, MATCH(clave_busqueda, rango, tipo_busqueda))
La clave de esta combinación es que los rangos seleccionados para las funciones INDEX y MATCH, respectivamente, deben ser una sola columna. En esencia, está utilizando una función VLOOKUP, pero especificando la columna en la que buscar y la columna de la que devolver el valor en rangos separados dentro de las funciones MATCH e INDEX. Como verá, esta metodología le ayuda a evitar los errores que pueden ocurrir usando VLOOKUP.
En el ejemplo anterior, he utilizado la función MATCH para saber qué fila contiene el ID de empleado #161 en la columna C. La función devuelve un número que indica a la función INDEX qué fila de la columna A debe buscar el vendedor. El resultado es que las dos funciones se combinan para decirme el nombre correcto (Ethan) para el Emp ID #161. La función que utilicé para hacer esto es =INDEX(A2:A11,MATCH(161,C2:C11,0)).
Como puede ver, a diferencia de VLOOKUP, la combinación funciona incluso si la columna de búsqueda no está situada más a la izquierda (vea los tres primeros ejemplos en la captura de pantalla anterior). No es sorprendente que también funcione como VLOOKUP, cuando la columna de búsqueda es la más a la izquierda.
Veamos también si las funciones se mantienen cuando se introduce una nueva columna en medio.
Afortunadamente, siguen funcionando. En cuanto introduje una nueva columna (Estado), Google Sheets actualizó las referencias automáticamente para adaptarse a este cambio.
Como has visto anteriormente, la combinación de las funciones MATCH e INDEX es mucho más flexible y versátil que la ya popular y potente función VLOOKUP. Pero la combinación de estas funciones puede ser aún más potente cuando se utilizan dos funciones MATCH en lugar de una sola.
Cómo utilizar la función INDEX con 2 funciones MATCH
Ya has visto lo útil que puede ser la combinación INDEX y MATCH. Pero, ¿qué ocurre si tiene una matriz bidimensional de la que desea obtener un valor? En este caso, puede utilizar la función MATCH dos veces dentro de la función INDEX, como se muestra en el siguiente ejemplo.
En este ejemplo, puede ver datos sobre la temperatura media en cada mes, para los años 2015-2020. Si desea extraer la temperatura media de un mes específico de un año específico de esta matriz, puede utilizar la combinación INDEX y MATCH para lograrlo. La función utilizada aquí es:
=INDEX(B2:M7, Match(B11, A2:A7, false), Match(B10, B1:M1, false))
Como puedes ver, estoy utilizando la función MATCH para que me dé la ubicación de la fila del año que estoy buscando (en este caso es 2018, que está en la 4ª fila de datos), así como la columna del mes que estoy buscando (septiembre, en la 9ª columna de datos). A continuación, la función INDEX toma estas coordenadas y devuelve la temperatura media de septiembre de 2018.
Al utilizar las funciones INDEX y MATCH, no sólo puede obtener una función de búsqueda más versátil que VLOOKUP, sino que también puede buscar en matrices bidimensionales. Para obtener más información sobre la función INDEX y su uso, consulte la siguiente entrada del blog: Cómo utilizar la función ÍNDICE en Hojas de cálculo de Google.
Nota del editor: Esta es una versión revisada de un post anterior que se ha actualizado para mayor precisión y exhaustividad.


