🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

INDEX y MATCH en Excel — La búsqueda de dos funciones que supera a VLOOKUP

|

INDEX y MATCH en Excel — La búsqueda de dos funciones que supera a VLOOKUP

ResumenINDEX/MATCH es 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 que VLOOKUP no 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 de MATCH — usa 0 para coincidencia exacta. Funciona en todas las versiones; en 365, XLOOKUP funde 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