La idea
La mayoría de los trabajos con hojas de cálculo chocan con la misma pared: el valor que necesitas está en otra tabla. Una línea de pedido lleva un product_id, pero el precio de hoy está en el catálogo. Una búsqueda une las dos. Le das una clave (143), un lugar donde buscar y la columna que quieres de vuelta, y devuelve la celda correspondiente.
El mecanismo es un recorrido. La búsqueda baja por una columna, la columna clave, comparando cada celda con tu clave. En la primera coincidencia recuerda la fila. Luego lee otra columna de esa misma fila y te entrega esa celda. Encuentra la fila, luego lee hacia un lado.
Figura 1
VLOOKUP recorre el catálogo buscando el producto 143 y luego el 121
| product_id | name | category | unit_price |
|---|---|---|---|
| 141 | Thatcher Acacia Dutch Oven | Kitchen | 13.99 |
| 142 | Upland Acacia Serving Platter | Kitchen | 38.99 |
| 143 | Pine Cast Iron Carafe | Kitchen | 289.00 |
| 144 | Hazel Porcelain Cutting Board | Kitchen | 129.00 |
| 145 | Cove Cast Iron Dutch Oven | Kitchen | 10.99 |
| lookup_value | formula | returns |
|---|---|---|
| 143 | =VLOOKUP(143,A2:D6,4,FALSE) | 289.00 |
| 121 | =VLOOKUP(121,A2:D6,4,FALSE) | #N/A |
| 121 | =IFERROR(VLOOKUP(121,A2:D6,4,FALSE),"not in catalog") | not in catalog |
- Una línea de pedido de Harbor & Pine dice producto 143. La fórmula quiere su precio.
VLOOKUPempieza arriba de la primera columna de la tabla y compara cada clave con 143. - 141 no es 143, así que baja. 142 tampoco. El recorrido es un bucle que se detiene en la primera coincidencia.
- 143 coincide en la tercera fila. El recorrido se detiene y la búsqueda guarda un solo dato: fila 3. El número de columna 4 elige
unit_pricede esa fila, 289.00. - El producto 121 (una lámpara de pie) no está en un catálogo de cocina. El recorrido llega al final sin coincidencia y devuelve
#N/A, que significa no disponible, no cero. IFERRORatrapa ese error y devuelve el texto que elijas. Úsalo para una clave ausente que esperas, no para esconder errores.
Por qué existe
La alternativa es escribir los precios en cada línea de pedido. Entonces un cambio de precio obliga a encontrar y corregir miles de celdas, y una celda olvidada pone mal el precio de un pedido sin avisar. Con una búsqueda el precio vive una sola vez en el catálogo y cada línea lo pide. Es la misma razón por la que una base de datos une tablas en lugar de copiar columnas.
En SQL esto es un JOIN sobre product_id. En Excel lo haces fórmula por fórmula, y por eso es lento en hojas muy grandes y por eso las columnas de búsqueda son lo primero que revisa un analista cuando un número se ve mal.
Cómo funciona por dentro
VLOOKUP: clave, tabla, número de columna, tipo de coincidencia
=VLOOKUP(clave, tabla, número_de_columna, FALSE) siempre busca en la columna más a la izquierda de la tabla que le das. El número de columna cuenta desde esa primera columna: en una tabla A2:D6, la columna 4 es D. De ahí salen dos trampas. Si insertas una columna dentro de la tabla, el número ya no apunta a lo que querías. Y la clave debe estar en la primera columna; si no, VLOOKUP no puede verla.
El último argumento decide cómo se comporta el recorrido. FALSE significa coincidencia exacta: se detiene en la primera celda igual a la clave o devuelve #N/A. TRUE, o dejarlo en blanco, significa coincidencia aproximada: supone que la primera columna está ordenada y devuelve la última fila cuya clave no es mayor que la tuya. Eso sirve para tramos (una tabla de umbrales) y es un error silencioso con ids. Olvidar el FALSE es el fallo más común en las búsquedas, porque en una lista casi ordenada sigue devolviendo valores verosímiles.
Claves ausentes
Una búsqueda exacta que no encuentra nada devuelve #N/A. Eso es información: este id no está en el catálogo. IFERROR(fórmula, "not in catalog") cambia el error por un mensaje, e IFNA hace lo mismo pero solo para #N/A, así que un error de escritura en la fórmula no queda oculto. Nunca envuelvas una búsqueda en IFERROR(…, 0) cuando se trate de dinero: un precio cero parece un dato.
HLOOKUP y XLOOKUP
HLOOKUP es el mismo recorrido de lado: busca en la primera fila y devuelve de una fila inferior. Úsalo cuando la tabla va a lo ancho, como los trimestres en el encabezado. XLOOKUP(clave, rango_de_búsqueda, rango_de_resultado) separa las dos columnas en lugar de usar un número de columna. Usa coincidencia exacta por defecto, puede mirar a la izquierda y admite un argumento para lo que se devuelve cuando no hay coincidencia. Necesita Excel 2021 o Microsoft 365, y Google Sheets lo tiene.
INDEX y MATCH
Antes de XLOOKUP, la forma de mirar a la izquierda era dividir el trabajo en dos. MATCH(clave, rango, 0) recorre un rango y devuelve la posición de la clave. INDEX(rango, posición) devuelve la celda en esa posición de otro rango.
Figura 2
INDEX/MATCH: una función encuentra la posición y la otra la lee
| position | product_id | name | unit_price |
|---|---|---|---|
| 1 | 141 | Thatcher Acacia Dutch Oven | 13.99 |
| 2 | 142 | Upland Acacia Serving Platter | 38.99 |
| 3 | 143 | Pine Cast Iron Carafe | 289.00 |
| 4 | 144 | Hazel Porcelain Cutting Board | 129.00 |
| 5 | 145 | Cove Cast Iron Dutch Oven | 10.99 |
| step | formula | returns |
|---|---|---|
| MATCH | =MATCH("Pine Cast Iron Carafe",C2:C6,0) | 3 |
| INDEX | =INDEX(B2:B6,3) | 143 |
- Aquí la clave es el nombre del producto y la respuesta es el product_id, que está a la izquierda del nombre.
VLOOKUPsolo puede devolver columnas a la derecha de la clave. MATCHrecorre la columna de nombres y devuelve la posición de la primera coincidencia exacta: 3. Una posición, no un valor.INDEXtoma una columna y una posición y devuelve la celda de ahí. La posición 3 de la columna product_id es 143. Anida las dos y la búsqueda funciona en cualquier dirección.
Como cada función recibe su propio rango, puedes buscar un nombre y devolver un id, o devolver una columna que ni siquiera está junto a la clave. El par además resiste a las columnas insertadas, porque apunta a las columnas directamente en lugar de contarlas.
Decisiones: IFS lee de arriba abajo
Las reglas por tramos usan la misma idea de "detenerse en el primer acierto". IFS(prueba1, valor1, prueba2, valor2, …) evalúa las pruebas en orden y devuelve el valor de la primera que es TRUE.
Figura 3
IFS prueba en orden y se detiene en el primer TRUE
-
C2>=75envío gratis: 0 -
C2>=354.95 -
TRUEtodo lo demás: 7.95
- El pedido 12418 tiene un subtotal de 37.98.
IFSlee la primera prueba: ¿37.98 es al menos 75? - No, así que sigue sin usar ese valor. Segunda prueba: ¿37.98 es al menos 35?
- Sí.
IFSdevuelve 4.95 y nunca mira la tercera prueba. Un subtotal de 20.00 pasaría de largo las dos y llegaría aTRUE, el comodín.
Eso significa que el orden importa. Prueba primero el umbral más grande; si pruebas antes >=35, un pedido de 682.96 recibe 4.95 y nunca llega al tramo de envío gratis. Una prueba final TRUE actúa como "en cualquier otro caso". Sin ella, un pedido que falla todas las pruebas devuelve #N/A. AND, OR y NOT combinan varias condiciones en un solo TRUE/FALSE dentro de cualquiera de estas pruebas.
Cómo comprobar una búsqueda antes de fiarte
Elige tres filas: una que debería coincidir, una que no y una cerca del borde de la tabla (la primera o la última clave). Calcula cada respuesta a ojo y compárala con lo que da la fórmula. Luego cuenta los errores de la columna de resultados. Un puñado de #N/A para ids que sabes que se eliminaron es normal; una columna llena de ellos suele significar que la clave tiene espacios de más, otro tipo de dato o un número de columna equivocado.
Errores comunes
"VLOOKUP devuelve la coincidencia más cercana"
Solo con coincidencia aproximada. Con FALSE devuelve la clave exacta o un error. Si ves un valor para un id que no existe, revisa si falta el último argumento.
"Una búsqueda puede devolver una columna a la izquierda de la clave"
VLOOKUP no puede, porque lee la columna más a la izquierda y cuenta hacia la derecha. Usa XLOOKUP o INDEX/MATCH. Reordenar la tabla de origen para que VLOOKUP funcione es cómo nacen las copias desactualizadas de los datos.
"Si la búsqueda devuelve un valor, la fila es la correcta"
Devuelve la primera fila que coincide. Si la columna clave tiene duplicados, las filas posteriores nunca se alcanzan, y los números guardados como texto nunca coinciden con números. Cuando un resultado sorprenda, revisa la columna clave en busca de duplicados y de espacios de más.
Ponte a prueba
Una pregunta. Al responderla, la lección queda marcada en el mapa; nunca bloquea un nivel.
No del todo. Solo la coincidencia aproximada (el último argumento TRUE u omitido) necesita la primera columna ordenada. Con FALSE el recorrido empieza arriba y se detiene en la clave.Prueba otra respuesta.
Correcto. La fórmula busca 143 esté donde esté, así que el orden de una tabla con coincidencia exacta nunca cambia la respuesta.
No del todo. Una búsqueda no guarda nada entre recálculos. Recorre de nuevo cada vez y encuentra la fila que ahora contiene 143.Prueba otra respuesta.
No del todo. Ordenar mueve filas completas. Las claves y sus precios viajan juntos, así que la clave se sigue encontrando.Prueba otra respuesta.
Lección hecha: ya está marcada en el mapa.