Excel · Capítulo 2 · Lección de conceptos · 7 min de lectura

Cómo encuentra su fila una búsqueda

Una búsqueda recorre una columna en busca de una clave, recuerda en qué fila la halló y devuelve la celda de otra columna de esa misma fila. Las decisiones con IFS funcionan igual: gana la primera prueba que se cumple.

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

catalog
product_idnamecategoryunit_price
141Thatcher Acacia Dutch OvenKitchen13.99
142Upland Acacia Serving PlatterKitchen38.99
143Pine Cast Iron CarafeKitchen289.00
144Hazel Porcelain Cutting BoardKitchen129.00
145Cove Cast Iron Dutch OvenKitchen10.99
Lo que devuelve la fórmula
lookup_valueformulareturns
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

Paso 1 de 5 Una línea de pedido de Harbor & Pine dice producto 143. La fórmula quiere su precio. VLOOKUP empieza arriba de la primera columna de la tabla y compara cada clave con 143.

  1. Una línea de pedido de Harbor & Pine dice producto 143. La fórmula quiere su precio. VLOOKUP empieza arriba de la primera columna de la tabla y compara cada clave con 143.
  2. 141 no es 143, así que baja. 142 tampoco. El recorrido es un bucle que se detiene en la primera coincidencia.
  3. 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_price de esa fila, 289.00.
  4. 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.
  5. IFERROR atrapa 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

catalog
positionproduct_idnameunit_price
1141Thatcher Acacia Dutch Oven13.99
2142Upland Acacia Serving Platter38.99
3143Pine Cast Iron Carafe289.00
4144Hazel Porcelain Cutting Board129.00
5145Cove Cast Iron Dutch Oven10.99
Los dos pasos
stepformulareturns
MATCH=MATCH("Pine Cast Iron Carafe",C2:C6,0)3
INDEX=INDEX(B2:B6,3)143

Paso 1 de 3 Aquí la clave es el nombre del producto y la respuesta es el product_id, que está a la izquierda del nombre. VLOOKUP solo puede devolver columnas a la derecha de la clave.

  1. Aquí la clave es el nombre del producto y la respuesta es el product_id, que está a la izquierda del nombre. VLOOKUP solo puede devolver columnas a la derecha de la clave.
  2. MATCH recorre la columna de nombres y devuelve la posición de la primera coincidencia exacta: 3. Una posición, no un valor.
  3. INDEX toma 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

  1. C2>=75 envío gratis: 0
  2. C2>=35 4.95
  3. TRUE todo lo demás: 7.95

Paso 1 de 3 El pedido 12418 tiene un subtotal de 37.98. IFS lee la primera prueba: ¿37.98 es al menos 75?

  1. El pedido 12418 tiene un subtotal de 37.98. IFS lee la primera prueba: ¿37.98 es al menos 75?
  2. No, así que sigue sin usar ese valor. Segunda prueba: ¿37.98 es al menos 35?
  3. Sí. IFS devuelve 4.95 y nunca mira la tercera prueba. Un subtotal de 20.00 pasaría de largo las dos y llegaría a TRUE, 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.

Una lista de precios tiene los ids de producto en la columna F y los precios en la G. =VLOOKUP(143,F2:G36,2,FALSE) devuelve 289.00. Después la lista se reordena por precio en lugar de por id. ¿Qué pasa con la fórmula?

Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.