Excel formula: XLOOKUP s kompleksnimi več merili -

Kazalo

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)

Zanimive Članki...