Cómo usar XLOOKUP para encontrar precios según la fecha
¿Te has preguntado alguna vez cómo obtener el precio más reciente de un producto basándote en fechas? XLOOKUP es una herramienta poderosa que te facilita este tipo de búsqueda, especialmente cuando tus datos no están ordenados. Vamos a explorar cómo hacer esto de una manera sencilla.
El desafío de los datos desordenados
Normalmente, si tus datos estuvieran organizados por fecha de manera ascendente, sería un paseo encontrar el último precio. Pero, ¿qué pasa si tus datos están desordenados? Aquí es donde XLOOKUP se convierte en tu mejor aliado.
Configurando XLOOKUP para el último precio
Por defecto, XLOOKUP te devuelve el primer resultado que encuentra en el conjunto de datos. Sin embargo, si deseas obtener el último resultado, tienes que modificar un par de configuraciones. Aunque podrías cambiar el argumento search_mode a -1 para buscar de «último a primero», eso no garantiza que el precio más reciente esté al final de la lista.
La estrategia adecuada
En lugar de eso, vamos a ajustar el argumento match_mode a -1. Esto nos permitirá buscar un match aproximado de «exacto o el siguiente más pequeño». Para lograrlo, deberás ajustar el valor de búsqueda y el arreglo de búsqueda, como veremos a continuación. La fórmula que utilizaremos es la siguiente, que puedes arrastrar hacia abajo en tu hoja de cálculo:
=XLOOKUP(MAX(date),(item=F5)*date,price,,-1)
Desglosando la fórmula paso a paso
Vamos a examinar los argumentos de la fórmula. Primero, el lookup_value es la fecha más reciente en tu conjunto de datos:
MAX(date) // obtener el valor máximo de la fecha
Luego tenemos el lookup_array, que se obtiene a través de una expresión de lógica booleana:
(item=F5)*date
Al comparar cada ítem con lo que hay en F5, digamos «Cinturón», generamos un arreglo de valores TRUE/FALSE:
{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE}
Los valores TRUE indican las entradas para «Cinturón». Este arreglo actúa como un filtro. Al multiplicar estos valores por los de la lista de fecha, transformamos los TRUE/FALSE en 1’s y 0’s:
={1;0;0;0;0;0;1;0;1;0;0}*date
El resultado es un arreglo que incluye solo los ceros y las fechas correspondientes a los cinturones:
={43484;0;0;0;0;0;43561;0;43671;0;0}
Nota: los números seriales son fechas válidas en Excel
Detalles finales para XLOOKUP
- Este arreglo se pasa directamente a XLOOKUP como el argumento lookup_array.
- El return_array corresponde al rango nombrado price (D5:D15).
- No se proporciona el argumento opcional not_found.
- El match_mode se establece en -1, para buscar un match exacto o el siguiente más pequeño.
XLOOKUP buscará en el arreglo de búsqueda el valor máximo de fecha. Dado que ya filtramos el arreglo para excluir fechas no relacionadas con «Cinturón», simplemente encontrará la mejor coincidencia (ya sea la fecha exacta o la siguiente más pequeña) que se relacione con la fecha más reciente. Así, obtendrás el precio asociado a esa fecha sin importar cómo estén ordenados los datos.
