Necesitas encontrar un valor en una tabla de Excel, pero la columna de búsqueda está a la derecha de los datos que deseas recuperar. La función VLOOKUP no puede buscar de derecha a izquierda. Esta limitación requiere un enfoque de fórmula diferente. Este artículo explica cómo combinar las funciones INDEX y MATCH para realizar una búsqueda en cualquier dirección.
Puntos clave: búsqueda de derecha a izquierda con INDEX y MATCH
- INDEX(array, row_num, [column_num]): Devuelve el valor en la intersección de una fila y una columna específicas dentro de un rango definido.
- MATCH(lookup_value, lookup_array, [match_type]): Encuentra la posición de un valor de búsqueda dentro de una sola fila o columna.
- Combinación INDEX-MATCH: Usa MATCH para encontrar el número de fila, que INDEX luego utiliza para recuperar el valor correcto de cualquier columna.
Por qué VLOOKUP falla en las búsquedas de derecha a izquierda
La función VLOOKUP está diseñada para buscar un valor en la primera columna de una tabla. Luego devuelve un valor de una columna a la derecha de esa primera columna. La sintaxis de la función es VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup]). El argumento col_index_num es un número estático que cuenta las columnas desde la columna más a la izquierda del table_array. Debido a que siempre busca en la primera columna, no puedes usar VLOOKUP para buscar un valor en la columna C y devolver un resultado de la columna A. Reorganizar los datos a menudo no es práctico. Las funciones INDEX y MATCH funcionan independientemente del orden de las columnas, lo que proporciona una solución flexible.
Pasos para crear una fórmula de búsqueda de derecha a izquierda
El método utiliza la función MATCH para encontrar la fila correcta y la función INDEX para extraer el valor de esa fila. Crearás una sola fórmula que anida MATCH dentro de INDEX.
- Identifica tus rangos de datos
Determina el valor de búsqueda, la columna de búsqueda donde buscarás y la columna de retorno que contiene los datos que deseas recuperar. Estas columnas pueden estar en cualquier orden. - Inicia la función INDEX
Haz clic en la celda donde deseas el resultado. Escribe =INDEX(. El primer argumento de INDEX es el array, que es toda la columna que contiene tus valores de retorno. Por ejemplo, si deseas devolver un nombre de la columna A, tu array es A:A o A2:A100. - Agrega la función MATCH para el número de fila
Para el argumento row_num en INDEX, escribe MATCH(. La función MATCH necesita tu valor de búsqueda, el array de búsqueda donde buscarlo y el tipo de coincidencia. Usa 0 para una coincidencia exacta. La fórmula ahora se ve así: =INDEX(A:A, MATCH(F2, C:C, 0)). - Completa y prueba la fórmula
Cierra los paréntesis: =INDEX(A:A, MATCH(F2, C:C, 0)). Presiona Enter. La fórmula busca el valor de la celda F2 en la columna C. Cuando encuentra una coincidencia, devuelve el valor correspondiente de la misma fila en la columna A.
Uso de INDEX y MATCH con un rango de tabla definido
Para obtener un mejor rendimiento y claridad, usa un rango de tabla específico en lugar de referencias de columna completa.
- Define tu tabla
Supón que tus datos están en las celdas A2:D100. La columna D contiene tus valores de búsqueda y la columna B contiene tus valores de retorno. - Escribe la fórmula con referencias de rango
En tu celda de resultado, ingresa: =INDEX(B2:B100, MATCH(F2, D2:D100, 0)). Esta fórmula es más eficiente que usar referencias de columna completa.
Errores comunes y errores de fórmula
Error #N/A de MATCH
El error #N/A significa que MATCH no puede encontrar el valor de búsqueda. Verifica si hay espacios finales en tus datos. Usa la función TRIM para limpiar las celdas. Verifica que el valor de búsqueda exista en el array de búsqueda. Asegúrate de que el argumento match_type sea 0 para una coincidencia exacta.
Error #REF! de INDEX
Se produce un error #REF! si el número de fila proporcionado por MATCH es mayor que el número de filas del array de INDEX. Esto sucede si tus rangos de INDEX y MATCH tienen tamaños diferentes. Asegúrate de que ambos rangos, como B2:B100 y D2:D100, cubran exactamente el mismo número de filas.
Resultados incorrectos con coincidencia aproximada
Si omites el argumento match_type o usas 1, MATCH realiza una búsqueda aproximada. Esto requiere que la columna de búsqueda esté ordenada de forma ascendente y puede devolver datos incorrectos. Usa siempre 0 como último argumento en MATCH para búsquedas exactas, a menos que necesites específicamente una coincidencia aproximada.
VLOOKUP vs INDEX-MATCH: diferencias clave
| Elemento | VLOOKUP | INDEX y MATCH |
|---|---|---|
| Dirección de búsqueda | Solo de izquierda a derecha | Cualquier dirección (izquierda, derecha, arriba, abajo) |
| Efecto de insertar columnas | Se rompe si col_index_num es incorrecto | No se ve afectado por la inserción o eliminación de columnas |
| Velocidad de procesamiento | Más lenta con datos grandes y no ordenados | Generalmente más rápida, especialmente con coincidencia exacta |
| Complejidad de la fórmula | Sintaxis más simple para tareas básicas | Más flexible, pero requiere dos funciones |
| Ubicación del valor de búsqueda | Debe estar en la primera columna del table_array | El array de búsqueda puede ser cualquier columna o fila única |
Ahora puedes buscar valores en cualquier columna y recuperar datos de cualquier otra columna de tu hoja de cálculo. La combinación de INDEX y MATCH elimina la limitación direccional de VLOOKUP. Para búsquedas bidireccionales más complejas, intenta usar MATCH dos veces dentro de INDEX para encontrar tanto la fila como la columna. Recuerda usar referencias absolutas como $A$2:$A$100 cuando copies tu fórmula a otras celdas.