Excel formula: XLOOKUP with complex multiple criteria

Explicación

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

=BUSCARX(1,(IZQUIERDA(B5:B16)="x")*(C5:C16="east")*NO(MES(D5:D16)=4),B5:E16)

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

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

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

Cómo funciona esta fórmula

Normalmente, la función BUSCARX 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 usar la lógica booleana para crear una matriz de búsqueda sobre la marcha compuesta solo por 1s y 0s, luego busque el valor 1. Este es el enfoque utilizado en este ejemplo:

=BUSCARX(1,boolean_array,result_array)

En este ejemplo, el criterio requerido es:

la cuenta comienza con "x" La región Y 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":

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

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

{VERDADERO;FALSO;VERDADERO;VERDADERO;VERDADERO;FALSO;FALSO;FALSO;VERDADERO;VERDADERO;FALSO;VERDADERO}

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

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

Como antes, obtenemos otra matriz con doce valores VERDADERO FALSO:

{FALSO;FALSO;VERDADERO;VERDADERO;VERDADERO;FALSO;VERDADERO;FALSO;FALSO;VERDADERO;FALSO;VERDADERO}

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

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

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

NO(MES(D5:D16)=4) // month is not April

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

{FALSO;FALSO;FALSO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO}

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

{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 matriz única como esta:

{0;0;0;1;1;0;0;0;0;1;0;1}

La fórmula ahora se puede reescribir así:

=BUSCARX(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 (exacto) y el modo de búsqueda (de primero a último), BUSCARX 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:

=BUSCARX(1,(IZQUIERDA(B5:B16)="x")*(C5:C16="east")*NO(MES(D5:D16)=4),B5:E16,,,-1)

Comentarios en Facebook


0 comentarios:

Copyright © 2021 TRUJILLOSOFT