Fórmula genérica
=LOOKUP(2,1/(item="hat"),price)
Resumen
Para buscar el último precio de un producto en una lista, ordenado de modo que los últimos artículos aparezcan al final, puede usar una fórmula basada en la función BUSCAR. En el programa de ejemplo, la fórmula en G7 es:
=LOOKUP(2,1/(item=F7),price)
donde el artículo es el rango con nombre B5: B12, el precio es el rango con nombre D5: D12 y los datos se ordenan de forma ascendente por fecha.
Explicación
La función BUSCAR asume que los datos están ordenados y siempre hace una coincidencia aproximada. Si el valor de búsqueda es mayor que todos los valores de la matriz de búsqueda, el comportamiento predeterminado es "retroceder" al valor anterior. Esta fórmula explota este comportamiento creando una matriz que contiene solo 1 y errores, y luego busca deliberadamente el valor 2, que nunca se encontrará.
Primero, se evalúa esta expresión:
item=F7
Cuando F7 contiene "sandals", el resultado es una matriz de valores VERDADERO y FALSO como este:
(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
Esta matriz se proporciona como divisor de 1:
1/(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
La operación matemática coacciona automáticamente los valores VERDADERO y FALSO a 1 y 0, por lo que el resultado es otra matriz como esta:
(#DIV/0!;1;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!)
devuelto directamente a la función BUSCAR como argumento del vector de búsqueda.
Observe que la matriz contiene solo dos valores únicos: el error de división por cero (# DIV / 0!) Y el número 1.
BUSCAR busca en la matriz el valor 2, ignorando los valores de error. Al no encontrar 2, vuelve al último 1, en la posición 7 en el vector de búsqueda. BÚSQUEDA luego devuelve el séptimo elemento en el vector de resultado (el rango denominado "precio"), el valor 15.
Para leer más sobre el concepto de buscar intencionalmente un valor que nunca aparecerá, lea sobre BigNum.