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

Función VLOOKUP en Excel — Cómo usarla, y el 4º argumento que la rompe

|

Función VLOOKUP en Excel — Cómo usarla, y el 4º argumento que la rompe

ResumenVLOOKUP busca un valor hacia abajo en la primera columna de una tabla y devuelve algo de una columna a su derecha: =VLOOKUP(lookup_value, table, col_index_num, [range_lookup]). El único ajuste que decide si funciona o no es el cuarto argumento: usa FALSE (coincidencia exacta) casi siempre. ¿Lo omitiste o pusiste TRUE? Excel hace una coincidencia aproximada que exige la primera columna ordenada de forma ascendente y devolverá la fila equivocada en silencio con datos sin ordenar. De su diseño se derivan dos límites duros: VLOOKUP solo puede mirar hacia la derecha, y su número de columna es un entero fijo que se rompe en cuanto insertas una columna. Funciona en todas las versiones; XLOOKUP corrige ambos límites en Excel 365.

=VLOOKUP(A2, Products, 3, FALSE)    ' busca A2 en la col 1, devuelve la col 3, exacta
=VLOOKUP("APX-100", $E$2:$H$500, 4, FALSE)   ' fija la tabla con $ al arrastrar

VLOOKUP es la función de búsqueda más usada del mundo, y casi todos los problemas que la gente tiene con ella se remontan a un único hecho sobre cómo funciona: no busca en toda la tabla. Recorre una sola columna —la primera— de arriba abajo, y cuando encuentra tu valor da un salto fijo de columnas hacia la derecha. Una vez que sostienes esa imagen, la trampa de la coincidencia exacta, el muro del «no puede mirar a la izquierda» y el número de columna roto dejan de ser misterios.

Nota: en una interfaz de Excel en español, VLOOKUP se llama BUSCARV. Relacionadas: INDEX = INDICE, MATCH = COINCIDIR, XLOOKUP = BUSCARX, IFERROR = SI.ERROR, TRIM = ESPACIOS, SUBSTITUTE = SUSTITUIR. 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: VLOOKUP recorre solo la primera columna, luego cuenta a la derecha
  • El bug nº1: el cuarto argumento, y por qué debe ser FALSE
  • El muro: VLOOKUP no puede mirar a la izquierda — y qué hacer en su lugar
  • El saboteador silencioso: un número de columna fijo que muere al insertar una columna
  • Qué significa realmente #N/A, y cómo arreglarlo (no solo esconderlo)
  • La única vez que la coincidencia aproximada sí es correcta: búsquedas por tramos

El modelo mental: recorre la primera columna, luego cuenta a la derecha

Imagina tu tabla como una cuadrícula. VLOOKUP pone el dedo en lo alto de la primera columna y baja hasta encontrar lookup_value. Esa es la única columna en la que busca. Cuando cae sobre una coincidencia, desplaza el dedo a la derecha col_index_num columnas y lee lo que haya ahí.

=VLOOKUP(A2, Products, 3, FALSE)
'          |       |     |   |
'          |       |     |   +-- coincidencia exacta
'          |       |     +------ devuelve la 3ª columna de la tabla
'          |       +------------ la tabla (la col 1 es donde busca)
'          +-------------------- el valor a buscar, en la col 1

Así que dos cosas quedan grabadas desde el principio. El valor que buscas debe estar en la primera columna de la tabla que le entregas, y el número 3 se cuenta desde esa primera columna, no desde la columna A de la hoja. Todo lo de abajo es consecuencia de este único diseño.

El bug nº1: el cuarto argumento (equivócate y te mentirá)

range_lookup es opcional, y ahí está justo la trampa. Omítelo y Excel toma por defecto TRUE — una coincidencia aproximada:

=VLOOKUP(A2, Products, 3)          ' PELIGRO — por defecto, coincidencia aproximada
=VLOOKUP(A2, Products, 3, TRUE)    ' lo mismo, escrito explícitamente
=VLOOKUP(A2, Products, 3, FALSE)   ' CORRECTO para el 99% de los casos — exacta

La coincidencia aproximada asume que la primera columna está ordenada de forma ascendente y devuelve la fila con el valor mayor que sea menor o igual que tu valor buscado. En una lista de productos sin ordenar, eso es una respuesta errónea de aspecto aleatorio — y sin error, sin aviso. La fórmula devuelve un número; es solo que está equivocado. Esta única omisión es el bug de VLOOKUP más común que existe.

El hábito que te salva: escribe siempre FALSE (o 0) como cuarto argumento a menos que tengas una razón concreta para no hacerlo. La coincidencia exacta encuentra la fila que querías o devuelve #N/A — un honesto «no encontrado» siempre le gana a un número equivocado silencioso.

El muro: VLOOKUP solo puede mirar a la derecha

Como busca en la primera columna y cuenta hacia la derecha, el valor que devuelves debe estar a la derecha del valor que buscas. ¿Quieres buscar un ID de producto y devolver el nombre en una columna a su izquierda? VLOOKUP sencillamente no puede — no existe un número de columna negativo.

' Tabla: A = Nombre, B = ID.  Tienes el ID, quieres el Nombre (a la IZQUIERDA).
=VLOOKUP(F2, A:B, ... )   ' imposible — Nombre está a la izquierda del ID, no hay col válida

Esto no es una limitación que esquives con astucia — es la razón por la que existen INDEX + MATCH y, más tarde, XLOOKUP. Ambos buscan y devuelven en rangos independientes, así que la dirección deja de importar. Si te sorprendes reordenando columnas solo para tener contento a VLOOKUP, esa es la señal de cambiar de herramienta, no de mover datos.

El saboteador silencioso: un número de columna fijo

col_index_num es un entero literal, y no tiene ni idea de qué columna querías en realidad. Escribe VLOOKUP(A2, Data, 4, FALSE) y siempre devolverá la 4ª columna — incluso después de que insertes una nueva columna en medio de Data, lo que empuja tu objetivo a la posición 5. La fórmula no da error. Simplemente devuelve la columna equivocada.

Esta es la razón número uno de que un libro heredado «se rompa de repente» después de que alguien edita la tabla de origen. Dos arreglos:

' Arreglo 1 — deja que MATCH encuentre la columna por encabezado, para que se autoajuste
=VLOOKUP(A2, Data, MATCH("Price", Data_Headers, 0), FALSE)

' Arreglo 2 — abandona el número de columna del todo con INDEX/MATCH o XLOOKUP
=INDEX(Data_Price, MATCH(A2, Data_ID, 0))

Envolver MATCH dentro de VLOOKUP convierte el entero frágil en una búsqueda por encabezado que sobrevive a columnas insertadas. Es un parche; la cura de verdad es una función que nunca necesitó contar columnas.

Qué significa realmente #N/A — y cómo arreglarlo

#N/A desde VLOOKUP significa una cosa: el valor no se encontró en la primera columna. Con coincidencia exacta, suele ser una de estas:

  • Espacios o caracteres ocultos"APX-100 " no coincide con "APX-100". Limpia la clave con TRIM (o SUBSTITUTE para espacios de no separación sueltos) en ambos lados.
  • Número guardado como texto — el valor buscado es el texto "1001" pero la tabla contiene el número 1001 (o al revés). Nunca coinciden. Corrige el tipo, no lo disimules.
  • El valor de verdad no está en la primera columna — comprueba que apuntaste la tabla a la columna inicial correcta.

Para mostrar un mensaje amable en lugar del error crudo, envuélvelo — pero envuélvelo de forma ajustada, para que solo captures el caso de «no encontrado», no errores de fórmula reales:

=IFERROR(VLOOKUP(A2, Products, 3, FALSE), "No encontrado")

Recurre a IFERROR solo cuando la fórmula ya sea correcta. Un IFERROR general alrededor de un VLOOKUP roto esconde el bug que lo hace fallar — acabarás mostrando «No encontrado» en filas que deberían haber coincidido.

La única vez que la coincidencia aproximada es correcta: búsquedas por tramos

Hay un uso legítimo para TRUE: búsquedas por tramos o rangos, donde quieres la fila en la que un valor cae en lugar de un acierto exacto — tramos fiscales, niveles de comisión, límites de calificación, franjas de peso de envío.

' Tramos de nota: 0->F, 60->D, 70->C, 80->B, 90->A  (¡primera columna ordenada!)
=VLOOKUP(B2, Grade_Table, 2, TRUE)    ' 73 -> cae en el tramo del 70 -> "C"

Aquí la coincidencia aproximada hace exactamente lo que quieres: encontrar el umbral más grande que no supere la nota. La condición innegociable es que la primera columna esté ordenada de forma ascendente — de lo contrario se rompe del modo silencioso, de datos sin ordenar, de antes. Este es el único escenario en que omitir FALSE es una función, no un bug.

La decisión de criterio: ¿VLOOKUP o algo más nuevo?

VLOOKUP está bien, y está en todas partes, para el caso simple: coincidencia exacta, el valor a devolver está a la derecha, las columnas no se moverán. Ve más allá de ella cuando:

  • Necesitas mirar a la izquierda, o buscar y devolver en cualquier dirección → INDEX + MATCH o XLOOKUP.
  • Las columnas de la tabla de origen se editan → cualquier cosa que no fije un número de columna.
  • Quieres un valor de «no encontrado» incorporado o coincidir por varios criterios → XLOOKUP.

VLOOKUP no está mal; es solo la herramienta más antigua de un cajón que ahora tiene otras mejores. Conocer sus tres puntos débiles —el cuarto argumento, el muro de solo mirar a la derecha y el frágil número de columna— es lo que te deja usarla con seguridad y saber cuándo parar.

Cómo ayuda ExcelMaster

La mayoría de los reportes de «mi VLOOKUP está mal» no son problemas de sintaxis de la fórmula — son el cuarto argumento cayendo por defecto en aproximada, un valor buscado que es texto de un lado y número del otro, o un número de columna que se desplazó tras una edición. ExcelMaster escribe la búsqueda con la coincidencia exacta fijada, detecta el desajuste de tipo que está causando tu #N/A y —cuando la disposición pide una búsqueda a la izquierda o una tabla que no para de cambiar— recurre a INDEX/MATCH o XLOOKUP en lugar de forzar a VLOOKUP a hacer un trabajo para el que nunca se construyó.

Preguntas frecuentes

¿Cómo uso VLOOKUP en Excel?

=VLOOKUP(lookup_value, table_array, col_index_num, FALSE). Pon el valor que buscas como primer argumento, la tabla (cuya primera columna contiene ese valor) como segundo, el número de columna a devolver (contado desde la primera columna de la tabla) como tercero, y FALSE para coincidencia exacta como cuarto. Ejemplo: =VLOOKUP(A2, Products, 3, FALSE) encuentra A2 en la primera columna de Products y devuelve la tercera columna.

¿Por qué mi VLOOKUP devuelve #N/A?

#N/A significa que el valor no se encontró en la primera columna de la tabla. Las causas habituales son espacios ocultos (limpia con TRIM), un desajuste de número guardado como texto entre el valor buscado y la tabla, o que el valor sencillamente no esté en la primera columna. Corrige la causa de fondo en vez de esconderla con IFERROR.

¿Qué hace el cuarto argumento de VLOOKUP?

Fija el tipo de coincidencia. FALSE (o 0) significa coincidencia exacta — usa esto casi siempre. TRUE (u omitido) significa coincidencia aproximada, que requiere la primera columna ordenada de forma ascendente y devuelve el valor mayor que sea menor o igual que tu valor buscado. La coincidencia aproximada solo es correcta para búsquedas por tramos, como tramos fiscales o límites de calificación.

¿Puede VLOOKUP mirar a la izquierda?

No. VLOOKUP busca en la primera columna y solo puede devolver columnas a su derecha. Para buscar un valor y devolver algo a su izquierda, usa INDEX/MATCH o XLOOKUP, que manejan cualquier dirección.

¿Por qué se rompió mi VLOOKUP después de insertar una columna?

Porque col_index_num es un número fijo. Insertar una columna en la tabla desplaza tu objetivo, pero el número sigue apuntando a la posición antigua. Usa MATCH("Header", …, 0) en lugar del número literal para que se autoajuste, o cambia a INDEX/MATCH o XLOOKUP, que no cuentan columnas.

Probado en

Probado en: Excel 365 (Windows 11) — última verificación: 05/07/2026.

Guías relacionadas: Excel INDEX y MATCH · Excel HLOOKUP y LOOKUP · XLOOKUP (2025) · Excel IFERROR · Excel FILTER