Resumen —
INDEX/MATCHes una búsqueda construida a partir de dos funciones que hacen una tarea cada una.MATCH(value, lookup_column, 0)devuelve la posición de un valor en una columna (qué fila).INDEX(return_column, position)devuelve el valor en esa posición. Anídalas —=INDEX(Return, MATCH(key, Lookup, 0))— y obtienes una búsqueda queVLOOKUPno puede igualar: mira a la izquierda o a la derecha, sobrevive a columnas insertadas y se extiende a una búsqueda real por fila y columna. La única trampa es el tercer argumento deMATCH— usa0para coincidencia exacta. Funciona en todas las versiones; en 365,XLOOKUPfunde ambas en una.
=INDEX(C2:C500, MATCH(F2, A2:A500, 0)) ' busca F2 en A, devuelve la C que coincide
=INDEX(Price, MATCH("APX-100", ID, 0)) ' los rangos con nombre se leen como una frase
La razón por la que los veteranos de las hojas de cálculo recurren a INDEX/MATCH
no es la nostalgia — es que separa dos cosas que VLOOKUP suelda juntas:
encontrar una fila y recuperar un valor. MATCH hace el encontrar. INDEX hace
el recuperar. Como a ninguna le importa dónde está la columna de la otra, toda la
geometría rígida de VLOOKUP —valor-a-la-izquierda, cuenta-columnas-a-la-derecha—
sencillamente se evapora.
Nota: en una interfaz de Excel en español, INDEX se llama INDICE y MATCH se llama COINCIDIR. Relacionadas: VLOOKUP = BUSCARV, XLOOKUP = BUSCARX, IFERROR = SI.ERROR. Las fórmulas de abajo usan los nombres en inglés — el comportamiento es el mismo. En Excel en español los errores aparecen como: #N/D, #¡REF!, #¿NOMBRE?, #¡VALOR!, #¡DIV/0!.
Lo que aprenderás
- El modelo mental: MATCH encuentra dónde, INDEX recupera qué
- Por qué desacoplar significa que puedes mirar a la izquierda, no solo a la derecha
- Por qué INDEX/MATCH sobrevive a columnas insertadas cuando VLOOKUP se rompe en silencio
- La trampa de
match_type— la misma lección de «usa 0» que el cuarto argumento de VLOOKUP - El movimiento que nada más hace con limpieza: una búsqueda bidireccional (fila × columna)
- Cuándo XLOOKUP la reemplaza — y cuándo INDEX/MATCH aún gana
El modelo mental: MATCH encuentra dónde, INDEX recupera qué
Ejecuta cada mitad por su cuenta y la división del trabajo es obvia.
=MATCH("APX-100", A2:A500, 0) ' -> 37 (APX-100 es el 37º elemento de la columna A)
=INDEX(C2:C500, 37) ' -> el valor en la 37ª celda de la columna C
MATCH busca en una sola columna y devuelve un número: la posición de tu valor.
INDEX ignora la búsqueda por completo — dale un rango y una posición y devuelve
el valor que está ahí. Ninguna sabe de la otra. Las unes alimentando la posición
de MATCH directamente en INDEX:
=INDEX(C2:C500, MATCH("APX-100", A2:A500, 0))
' ^recupera de aquí ^encuentra la fila aquí
Esa es toda la técnica. Y fíjate en lo que no está en ella: sin conteo de columnas, sin exigir que los dos rangos estén uno al lado del otro ni en ningún orden concreto.
Desacoplar significa que puedes mirar a la izquierda
Como el rango de búsqueda y el rango de retorno son argumentos
independientes, su orden de izquierda a derecha es irrelevante. ¿Pones el ID en la
columna D y el nombre en la A? MATCH busca en D, INDEX recupera de A, y
simplemente funciona:
' A = Nombre, D = ID. Tienes el ID; quieres el Nombre a su IZQUIERDA.
=INDEX(A2:A500, MATCH(F2, D2:D500, 0)) ' sin esfuerzo — VLOOKUP no puede hacer esto
Esta es la ventaja estrella. VLOOKUP solo puede
devolver columnas a la derecha de la columna de búsqueda; INDEX/MATCH no tiene esa
regla porque no existe una única «tabla» con una primera columna fija — solo dos
rangos que nombras explícitamente.
Sobrevive a columnas insertadas
El col_index_num de VLOOKUP es un entero fijo que apunta a la columna equivocada en
cuanto alguien inserta una. INDEX/MATCH nunca cuenta columnas — apunta a rangos con
nombre o referencias de columna entera que Excel actualiza automáticamente:
=INDEX(C2:C500, MATCH(F2, A2:A500, 0))
' ¿Insertas una columna entre A y C? Excel reescribe C2:C500 -> D2:D500 por ti.
Inserta, elimina o mueve una columna y las referencias se desplazan con ella. Por eso INDEX/MATCH es la opción más segura para un libro que otras personas editarán — la fórmula describe qué datos quiere, no cuántas columnas más allá está hoy.
La trampa de match_type (la misma lección que VLOOKUP)
El tercer argumento de MATCH es exactamente el mismo tropiezo que el cuarto de
VLOOKUP. Por defecto es 1 (aproximada, asume orden ascendente). Casi siempre
quieres 0:
=MATCH(F2, A2:A500) ' PELIGRO — por defecto 1, aproximada, necesita datos ordenados
=MATCH(F2, A2:A500, 1) ' aproximada: valor mayor <= F2 (se requiere ascendente)
=MATCH(F2, A2:A500, 0) ' CORRECTO para búsquedas exactas — la fila igual a F2
=MATCH(F2, A2:A500, -1) ' aproximada: valor menor >= F2 (se requiere descendente)
Escribe 0 para la coincidencia exacta que casi con seguridad quieres. El MATCH
aproximado tiene el mismo nicho legítimo que el VLOOKUP aproximado — búsquedas por
tramos en una columna ordenada (encontrar en qué rango cae un valor) — y el mismo
fallo de respuesta-equivocada-silenciosa en todo lo demás.
El movimiento que nada más hace con limpieza: una búsqueda bidireccional
Aquí es donde INDEX/MATCH deja de ser «VLOOKUP hecho mejor» y se convierte en su
propia herramienta. INDEX acepta tanto un número de fila como uno de columna.
Alimenta cada uno desde su propio MATCH y buscas un valor en la intersección de una
clave de fila y una clave de columna — una búsqueda contra una matriz:
' Cuadrícula: meses por la columna A, regiones por la fila 1, números en medio.
=INDEX(B2:M13, MATCH(F2, A2:A13, 0), MATCH(G2, B1:M1, 0))
' ^qué fila (mes) ^qué columna (región)
Un MATCH localiza la fila, el otro localiza la columna, e INDEX devuelve la celda
donde se cruzan. VLOOKUP necesita una torpe columna auxiliar para esto; XLOOKUP tiene
que anidarse dentro de otro XLOOKUP. INDEX con dos MATCH lo lee en una línea — sigue
siendo la búsqueda bidireccional más limpia de Excel.
Envolver errores — de forma ajustada
Un MATCH que no encuentra nada devuelve #N/A, que se propaga hacia fuera a través
de INDEX. Manéjalo de la misma forma disciplinada: corrige la causa primero
(espacios, desajuste texto-vs-número), luego envuelve solo cuando la fórmula ya sea
correcta.
=IFERROR(INDEX(C2:C500, MATCH(F2, A2:A500, 0)), "No encontrado")
Prefiere IFERROR aquí antes que un envoltorio
general que también se tragaría una referencia genuinamente rota. El #N/A de
MATCH es información — te dice que la clave no está ahí.
La decisión de criterio: ¿INDEX/MATCH, VLOOKUP o XLOOKUP?
XLOOKUP— si estás en Excel 365, es la opción por defecto para una búsqueda de un solo valor: mira en cualquier dirección, admite un valor de «no encontrado» incorporado, y se lee de forma más simple que un INDEX/MATCH anidado.- INDEX/MATCH — sigue siendo el ganador para búsquedas bidireccionales (fila × columna), y la opción más robusta en versiones antiguas sin XLOOKUP donde necesitas búsquedas a la izquierda y referencias a prueba de inserciones.
VLOOKUP— está bien para el caso simple de coincidencia-exacta-devolver-a-la-derecha, pero es el que se rompe cuando las columnas se mueven.
La habilidad está en leer la forma del problema: ¿un solo valor o una intersección? ¿Excel moderno o un libro compartido antiguo? Eso te dice cuál de los tres tienes entre manos.
Cómo ayuda ExcelMaster
Lo más difícil de INDEX/MATCH para la mayoría de la gente es la anidación — recordar
qué rango busca MATCH, cuál devuelve INDEX y dónde van los dos MATCH en una búsqueda
bidireccional. ExcelMaster escribe el patrón entero a partir de una descripción
llana («saca la región de cada pedido de la hoja de clientes, coincidiendo por ID de
cliente»), fija la coincidencia exacta, y elige la estructura correcta — un solo
XLOOKUP cuando eso es más limpio, un INDEX de dos
MATCH cuando de verdad estás haciendo una búsqueda en cuadrícula — para que no montes
los corchetes a mano.
Preguntas frecuentes
¿Qué es INDEX MATCH y cómo funciona?
Es una búsqueda hecha de dos funciones. MATCH(value, lookup_range, 0) devuelve la
posición de un valor en una columna; INDEX(return_range, position) devuelve el
valor en esa posición. Combinadas como
=INDEX(return_range, MATCH(value, lookup_range, 0)), MATCH encuentra la fila e INDEX
recupera el resultado de cualquier columna que elijas.
¿Por qué usar INDEX MATCH en lugar de VLOOKUP?
Tres razones: puede mirar a la izquierda (devolver una columna anterior a la de búsqueda), sobrevive a columnas insertadas o movidas porque no fija un número de columna, y se extiende a una búsqueda bidireccional (fila × columna) real. VLOOKUP solo puede devolver columnas a la derecha y se rompe cuando cambian las columnas de la tabla.
¿Cómo hago una búsqueda bidireccional con INDEX y MATCH?
Usa dos funciones MATCH dentro de INDEX, una para la fila y otra para la columna:
=INDEX(data, MATCH(row_key, row_headers, 0), MATCH(col_key, col_headers, 0)). El
primer MATCH encuentra qué fila, el segundo encuentra qué columna, e INDEX devuelve el
valor donde se cruzan.
¿Qué significa el 0 en MATCH?
0 es el match_type para una coincidencia exacta — la posición del valor que es
igual a tu valor buscado. 1 (el valor por defecto) y -1 hacen coincidencia
aproximada sobre datos ordenados. Usa 0 para búsquedas normales; omitirlo toma por
defecto 1 y puede devolver en silencio la fila equivocada con datos sin ordenar.
¿Vale la pena aprender INDEX MATCH si ya tengo XLOOKUP?
Sí. XLOOKUP reemplaza a INDEX/MATCH para búsquedas
simples de un solo valor, pero INDEX/MATCH sigue siendo la forma más limpia de hacer
una búsqueda bidireccional (fila × columna), y es esencial en versiones antiguas de
Excel que no tienen XLOOKUP.
Probado en
Probado en: Excel 365 (Windows 11) — última verificación: 05/07/2026.
Guías relacionadas: Excel VLOOKUP · Excel HLOOKUP y LOOKUP · XLOOKUP (2025) · Excel IFERROR · Excel FILTER
