Formula Excel: XLOOKUP cu criterii multiple complexe -

Cuprins

rezumat

Pentru a căuta date pe baza mai multor criterii complexe, puteți utiliza funcția XLOOKUP cu expresii multiple bazate pe logică booleană. În exemplul prezentat, formula din G5 este:

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

Cu setările implicite XLOOKUP pentru modul de potrivire (exact) și modul de căutare (de la primul până la ultimul) formula se potrivește cu prima înregistrare în care:

contul începe cu „x” ȘI regiunea este „est”, iar luna NU este aprilie.

care este a patra înregistrare (rândul 8) din exemplul prezentat.

Explicaţie

În mod normal, funcția XLOOKUP este configurată pentru a căuta o valoare într-o matrice de căutare care există pe foaia de lucru. Cu toate acestea, atunci când criteriile utilizate pentru a se potrivi cu o valoare devin mai complexe, puteți utiliza logica booleană pentru a crea o matrice de căutare din mers compusă doar din 1s și 0s, apoi căutați valoarea 1. Aceasta este abordarea utilizată în acest exemplu:

=XLOOKUP(1,boolean_array,result_array)

În acest exemplu, criteriile necesare sunt:

contul începe cu „x” ȘI regiunea este „est”, iar luna NU este aprilie.

Pentru fiecare dintre cele trei criterii separate de mai sus, folosim o expresie logică separată. Prima expresie folosește funcția STÂNGA pentru a testa dacă Contul începe cu „x”:

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

Deoarece verificăm douăsprezece valori, rezultatul este un tablou cu douăsprezece valori de acest fel:

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

A doua expresie testează dacă Regiunea este „est” folosind operatorul egal cu (=):

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

Ca și înainte, obținem o altă matrice cu douăsprezece valori FALSE ADEVĂRATE:

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

A treia expresie trebuie să excludă luna aprilie. Cel mai simplu mod de a face acest lucru este să testați luna aprilie direct cu funcția LUNĂ:

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

Apoi utilizați funcția NOT pentru a inversa rezultatul:

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

care creează o matrice care descrie corect „nu aprilie”:

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

Apoi, toate cele trei matrici sunt multiplicate împreună, iar operația matematică constrânge valorile TRUE și FALSE la 1s și 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)

În aritmetica booleană, multiplicarea funcționează ca funcția logică ȘI, deci rezultatul final este o singură matrice ca aceasta:

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

Formula poate fi acum rescrisă astfel:

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

Cu 1 ca valoare de căutare și setările implicite pentru modul de potrivire (exact) și modul de căutare (de la primul până la ultimul), XLOOKUP se potrivește cu primul 1 (a patra poziție) și returnează rândul corespunzător din matricea de rezultate, care este B8: E8.

Ultimul meci

Setând argumentul opțional al modului de căutare la -1, puteți localiza „ultima potrivire” cu aceleași criterii ca acesta:

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

Articole interesante...