1. Faro

Nivel 3 · Precios de lista con VLOOKUP e IFERROR

La solicitud

De Mei Morgan, Compradora

“Compro Decor y Textiles. Para estas líneas de principios de febrero, ¿puedes añadir el precio de lista de hoy y la categoría desde el catálogo de la derecha? Hemos retirado algunos productos desde entonces, así que esos deberían decir "not in catalog" en lugar de mostrar un error.”

Tu objetivo

En C2:C33, usa VLOOKUP con coincidencia exacta (FALSE) para devolver el precio de lista de cada línea, la 4.ª columna del catálogo F2:I36, buscando el product_id de la columna B. En D2:D33, devuelve la categoría, la 3.ª columna del catálogo, de la misma manera. Envuelve ambas en IFERROR para que un producto que no está en el catálogo muestre el texto "not in catalog".

  • Llena C2:D33 con los valores correctospendiente
  • Con fórmulas, no con números escritospendiente
  • Usa VLOOKUPpendiente

Tu hoja

Excel
La hoja de este nivel
ABCDEFGHIJ
1order_item_idproduct_idlist_pricecategory product_id namecategory unit_price
219128190161Cove Jute Duvet CoverTextiles219.00
319129190162Oakley Jute Knit ThrowTextiles23.99
419130162164Cove Wool Lumbar PillowTextiles52.99
519132189165Weston Cashmere-Blend QuiltTextiles25.99
619134194166Harbor Wool Knit ThrowTextiles28.99
719135185168Upland Percale Lumbar PillowTextiles159.00
819138186169Spruce Wool Duvet CoverTextiles66.99
919140173170Rowan Cashmere-Blend Throw BlanketTextiles17.99
1019141194171Driftwood Percale Area RugTextiles27.99
1119142183172Maple Wool Throw PillowTextiles18.99
1219143186173Bramble Percale QuiltTextiles139.00
1319148193174Vale Cashmere-Blend Knit ThrowTextiles18.99
1419149178175Glen Cotton Runner RugTextiles84.99
1519150186176Fairhaven Cotton Throw PillowTextiles78.99
1619152175177Delancey Cashmere-Blend Duvet CoverTextiles169.00
1719154198178Sutton Wool Knit ThrowTextiles70.99
1819156199179Delancey Jute Area RugTextiles30.99
1919157173180Hazel Linen Throw PillowTextiles20.99
2019158190181Cedar Marble Bud VaseDecor179.00
2119159193182Nantucket Brass Wall MirrorDecor17.99
2219160198184Thatcher Oak CandleDecor17.99
2319164194185Ridge Brass Bud VaseDecor12.99
2419166164186Birch Brass Floor MirrorDecor20.99
2519168193187Ashford Oak Canvas PrintDecor149.00
2619170178188Fern Oak Candle Holder SetDecor179.00
2719171163189Northfield Brass Bud VaseDecor76.99
2819173171190Elm Brass Floor MirrorDecor43.99
2919175184192Thatcher Marble Candle Holder SetDecor15.99
3019176191193Delancey Brass VaseDecor19.99
3119178166194Chester Brass Wall MirrorDecor159.00
3219179186195Fairhaven Soy Wax Framed PrintDecor103.99
3319181191196Pine Glass Candle Holder SetDecor25.99
34197Ridge Soy Wax VaseDecor109.00
35198Harbor Oak Floor MirrorDecor44.99
36199Oakley Brass Framed PrintDecor104.99
37
38

Cargando el editor…

    ResultadoPresiona Comprobar para comparar C2:D33

    Mote revisa tu resultado

    Presiona Comprobar. Cada celda correcta se vuelve una luciérnaga en tu linterna.

    La lección

    Las líneas de pedido guardan un product_id, no un precio ni una categoría: esos viven una sola vez, en el catálogo. Para verlos junto a cada línea tienes que buscarlos: encontrar el id de la línea en el catálogo y traer un valor de la misma fila. VLOOKUP es la forma más antigua de hacerlo, y la que más verás en libros compartidos. En esta hoja las líneas están en A1:D33 y el catálogo de Decor y Textiles está a la derecha, en F1:I36.

    Los cuatro argumentos

    =VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
    Argumento En C2 Significa
    lookup_value B2 el id que se busca (190)
    table_array $F$2:$I$36 todo el catálogo; los ids deben estar en su primera columna
    col_index_num 4 qué columna de la tabla devolver, contando F como 1
    range_lookup FALSE solo coincidencia exacta

    Para la fila 2, VLOOKUP encuentra 190 en la columna F y devuelve la 4.ª columna de esa fila: 43.99. Cambia el 4 por un 3 y la misma fórmula devuelve la categoría, Decor. El número de columna cuenta dentro de la tabla, no a lo largo de la hoja: F es 1, G es 2, H es 3, I es 4. Pide la columna 5 y VLOOKUP muestra #REF!, porque esta tabla solo tiene cuatro.

    Escribe siempre FALSE

    El último argumento es opcional, y su valor por defecto es TRUE: una coincidencia aproximada. VLOOKUP asume entonces que los ids están ordenados y se conforma con el id más grande que no supere el que pediste. En este catálogo, ordenado por id, eso suena inofensivo hasta que falta una clave. El producto 183 se retiró, y =VLOOKUP(183,$F$2:$I$36,4) devuelve 17.99, el precio del producto 182, el Nantucket Brass Wall Mirror. Ningún error, solo un precio equivocado. Con FALSE, la misma fórmula muestra #N/A, que es la verdad: 183 no está en el catálogo.

    IFERROR para los ids que no están

    Cuatro líneas de esta hoja corresponden a productos retirados: 183 (fila 11), 163 (fila 27) y 191 (filas 30 y 33). Cada una muestra #N/A. IFERROR reemplaza un error por un valor que tú eliges:

    =IFERROR(VLOOKUP(B2,$F$2:$I$36,4,FALSE),"not in catalog")

    Si la búsqueda funciona, IFERROR deja pasar su resultado; si falla, la celda dice “not in catalog”. Rellenada hacia abajo, 19 líneas resultan ser Decor, 9 Textiles y 4 not in catalog: 32, una por línea.

    IFNA hace lo mismo pero solo para #N/A. Esa diferencia importa: con un número de columna equivocado, IFERROR(VLOOKUP(B2,$F$2:$I$36,5,FALSE),…) oculta el #REF! y llama “not in catalog” a un producto real, mientras que IFNA deja ver el #REF! para que puedas corregir la fórmula. Ambas se comportan igual en Google Sheets. El texto también es más seguro que el 0 como valor de reemplazo en una columna de precios: un 0 se suma en los totales, el texto no.

    Errores comunes

    • Sin FALSE. Los ids que faltan toman prestado en silencio el precio de su vecino.
    • Contar las columnas desde A. El precio es la columna 4 de F2:I36, no la columna 9 de la hoja.
    • Tabla sin fijar. F2:I36 rellenada hacia abajo pasa a F3:I37, y los primeros productos salen de la búsqueda fila por fila. Fíjala: $F$2:$I$36.
    • Una tabla que empieza en la columna equivocada. VLOOKUP solo busca en la primera columna de la tabla que le des. $G$2:$I$36 busca nombres, no ids.

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