Fórmula genérica
=BUSCAR(2,1/(item="hat"),price)
Explicación
Para buscar el último precio de un producto en una lista, ordenado para que los últimos artículos aparezcan en último lugar, puede usar una fórmula basada en la función BUSCAR. En el programa de ejemplo, la fórmula en G7 es:
=BUSCAR(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.
Cómo funciona esta fórmula
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 en 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 1s 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 "sandalias", el resultado es una matriz de valores VERDADERO y FALSO como este:
{FALSO;VERDADERO;FALSO;VERDADERO;FALSO;FALSO;VERDADERO;FALSO}
Esta matriz se proporciona como el divisor de 1:
1/{FALSO;VERDADERO;FALSO;VERDADERO;FALSO;FALSO;VERDADERO;FALSO}
La operación matemática coacciona automáticamente los valores VERDADERO y FALSO a 1s y 0s, por lo que el resultado es otra matriz como esta:
{#DIV/0!;1;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!}
regresó directamente a la función BUSCAR como el argumento del vector de búsqueda.
Observe que la matriz contiene solo dos valores únicos: el error dividir 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. BUSCAR luego devuelve el séptimo elemento en el vector de resultados (el "precio" del rango con nombre), el valor 15.
Para leer más sobre el concepto de buscar intencionalmente un valor que nunca aparecerá, lea sobre BigNum.
0 comentarios:
Publicar un comentario