Fórmula de Excel: XLOOKUP con múltiples criterios complejos -

Tabla de contenido

Resumen

Para buscar datos basados ​​en múltiples criterios complejos, puede usar la función XLOOKUP con múltiples expresiones basadas en lógica booleana. En el ejemplo que se muestra, la fórmula en G5 es:

=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16)

Con la configuración predeterminada de XLOOKUP para el modo de coincidencia (exacta) y el modo de búsqueda (del primero al último), la fórmula coincide con el primer registro donde:

la cuenta comienza con "x" Y la región es "este", y el mes NO es abril.

que es el cuarto registro (fila 8) en el ejemplo mostrado.

Explicación

Normalmente, la función XLOOKUP está configurada para buscar un valor en una matriz de búsqueda que existe en la hoja de trabajo. Sin embargo, cuando los criterios utilizados para hacer coincidir un valor se vuelven más complejos, puede utilizar la lógica booleana para crear una matriz de búsqueda sobre la marcha compuesta solo por unos y ceros, luego busque el valor 1. Este es el enfoque utilizado en este ejemplo:

=XLOOKUP(1,boolean_array,result_array)

En este ejemplo, el criterio requerido es:

la cuenta comienza con "x" Y la región es "este", y el mes NO es abril.

Para cada uno de los tres criterios separados anteriores, usamos una expresión lógica separada. La primera expresión usa la función IZQUIERDA para probar si la cuenta comienza con "x":

LEFT(B5:B16)="x" // account begins with "x"

Como estamos comprobando doce valores, el resultado es una matriz con doce valores como este:

(TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE)

La segunda expresión prueba si la región es "este" usando el operador igual a (=):

C5:C16="east" // region is east

Como antes, obtenemos otra matriz con doce valores VERDADEROS FALSOS:

(FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE)

La tercera expresión debe excluir el mes de abril. La forma más sencilla de hacer esto es probar el mes de abril directamente con la función MES:

MONTH(D5:D16)=4 // month is April

Luego use la función NO para revertir el resultado:

NOT(MONTH(D5:D16)=4) // month is not April

que crea una matriz que describe correctamente "no abril":

(FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE)

A continuación, las tres matrices se multiplican juntas, y la operación matemática convierte los valores VERDADERO y FALSO en 1 y 0:

(1;0;1;1;1;0;0;0;1;1;0;1)* (0;0;1;1;1;0;1;0;0;1;0;1)* (0;0;0;1;1;1;1;1;1;1;1;1)

En aritmética booleana, la multiplicación funciona como la función lógica Y, por lo que el resultado final es una única matriz como esta:

(0;0;0;1;1;0;0;0;0;1;0;1)

La fórmula ahora se puede reescribir así:

=XLOOKUP(1,(0;0;0;1;1;0;0;0;0;1;0;1),B5:E16)

Con 1 como valor de búsqueda y la configuración predeterminada para el modo de coincidencia (exacta) y el modo de búsqueda (del primero al último), XLOOKUP coincide con el primer 1 (cuarta posición) y devuelve la fila correspondiente en la matriz de resultados, que es B8: E8.

El ultimo partido

Al establecer el argumento del modo de búsqueda opcional en -1, puede ubicar la "última coincidencia" con los mismos criterios como este:

=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16,,,-1)

Articulos interesantes...