
Povzetek
Za iskanje podatkov na podlagi več kompleksnih meril lahko uporabite funkcijo XLOOKUP z več izrazi, ki temeljijo na logični logiki. V prikazanem primeru je formula v G5:
=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16)
S privzetimi nastavitvami XLOOKUP za način ujemanja (natančno) in način iskanja (od prvega do zadnjega) se formula ujema s prvim zapisom, kjer:
račun se začne z "x" IN regija je "vzhod", mesec pa NI april.
kar je četrti zapis (vrstica 8) v prikazanem primeru.
Pojasnilo
Običajno je funkcija XLOOKUP nastavljena tako, da išče vrednost v iskalnem polju, ki obstaja na delovnem listu. Ko pa kriteriji, ki se uporabljajo za ujemanje vrednosti, postanejo bolj zapleteni, lahko z logično logiko ustvarite iskalno polje na letenje, sestavljeno le iz 1s in 0s, nato pa poiščite vrednost 1. To je pristop, uporabljen v tem primeru:
=XLOOKUP(1,boolean_array,result_array)
V tem primeru so zahtevana merila:
račun se začne z "x" IN regija je "vzhod", mesec pa NI april.
Za vsako od treh ločenih meril uporabljamo ločen logični izraz. Prvi izraz uporablja funkcijo LEVO, da preizkusi, ali se račun začne z "x":
LEFT(B5:B16)="x" // account begins with "x"
Ker preverjamo dvanajst vrednosti, je rezultat matrika z dvanajstimi vrednostmi, kot je ta:
(TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE)
Drugi izraz preizkusi, ali je Regija "vzhod", z uporabo operatorja (=):
C5:C16="east" // region is east
Kot prej smo dobili še eno matriko z dvanajstimi vrednostmi TRUE FALSE:
(FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE)
Tretji izraz mora izključiti mesec april. To najlažje naredite tako, da za mesec april preizkusite neposredno s funkcijo MONTH:
MONTH(D5:D16)=4 // month is April
Nato s pomočjo funkcije NOT obrnite rezultat:
NOT(MONTH(D5:D16)=4) // month is not April
ki ustvari matriko, ki pravilno opisuje "ne april":
(FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE)
Nato se vsi trije nizi pomnožijo in matematična operacija prisili vrednosti TRUE in FALSE na 1s in 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)
V logični aritmetiki množenje deluje kot logična funkcija IN, zato je končni rezultat ena sama matrika:
(0;0;0;1;1;0;0;0;0;1;0;1)
Formulo lahko zdaj prepišemo tako:
=XLOOKUP(1,(0;0;0;1;1;0;0;0;0;1;0;1),B5:E16)
Z 1 kot iskalno vrednostjo in privzetimi nastavitvami za način ujemanja (natančen) in način iskanja (od prvega do zadnjega) se XLOOKUP ujema s prvim 1 (četrto mesto) in vrne ustrezno vrstico v matriki rezultatov, ki je B8: E8.
Zadnja tekma
Če izbirni argument načina iskanja nastavite na -1, lahko poiščete "zadnje ujemanje" z enakimi merili, kot je ta:
=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16,,,-1)