![](https://cdn.wiki-base.com/2921036/excel_formula_xlookup_with_complex_multiple_criteria__2.png.webp)
Sažetak
Da biste pretraživali podatke na temelju višestrukih složenih kriterija, možete koristiti funkciju XLOOKUP s više izraza na temelju logičke logike. U prikazanom primjeru formula u G5 je:
=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16)
Sa zadanim postavkama XLOOKUP-a za način podudaranja (točno) i način pretraživanja (od prvog do zadnjeg), formula se podudara s prvim zapisom, gdje:
račun počinje s "x" I regija je "istok", a mjesec NIJE travanj.
što je četvrti zapis (redak 8) u prikazanom primjeru.
Obrazloženje
Uobičajeno je funkcija XLOOKUP konfigurirana za traženje vrijednosti u nizu pretraživanja koji postoji na radnom listu. Međutim, kada kriteriji koji se koriste za podudaranje vrijednosti postanu složeniji, možete koristiti logičku logiku za kreiranje niza pretraživanja u letu koji se sastoji samo od 1 i 0, a zatim potražite vrijednost 1. Ovo je pristup koji se koristi u ovom primjeru:
=XLOOKUP(1,boolean_array,result_array)
U ovom primjeru potrebni kriteriji su:
račun počinje s "x" I regija je "istok", a mjesec NIJE travanj.
Za svaki od tri odvojena gornja kriterija koristimo zaseban logički izraz. Prvi izraz koristi funkciju LIJEVO za testiranje počinje li račun s "x":
LEFT(B5:B16)="x" // account begins with "x"
Budući da provjeravamo dvanaest vrijednosti, rezultat je niz s dvanaest vrijednosti poput ove:
(TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE)
Drugi izraz testira je li Regija "istok" koristeći operator jednak (=):
C5:C16="east" // region is east
Kao i prije, dobili smo još jedan niz s dvanaest TRUE FALSE vrijednosti:
(FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE)
Treći izraz treba izuzeti mjesec travanj. Najlakši način da to učinite je testiranje za mjesec travanj izravno s funkcijom MONTH:
MONTH(D5:D16)=4 // month is April
Zatim upotrijebite funkciju NOT da biste poništili rezultat:
NOT(MONTH(D5:D16)=4) // month is not April
koji stvara niz koji ispravno opisuje "ne April":
(FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE)
Dalje, sva tri polja množe se zajedno, a matematička operacija prisiljava vrijednosti TRUE i FALSE na 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)
U logičkoj aritmetici množenje djeluje poput logičke funkcije I, pa je konačni rezultat jedan takav niz:
(0;0;0;1;1;0;0;0;0;1;0;1)
Formula se sada može prepisati ovako:
=XLOOKUP(1,(0;0;0;1;1;0;0;0;0;1;0;1),B5:E16)
Uz 1 kao vrijednost pretraživanja i zadane postavke za način podudaranja (točno) i način pretraživanja (od prvog do zadnjeg), XLOOKUP odgovara prvom 1 (četvrti položaj) i vraća odgovarajući redak u polju rezultata, a to je B8: E8.
Posljednja utakmica
Postavljanjem neobaveznog argumenta načina pretraživanja na -1, možete pronaći "posljednje podudaranje" s istim kriterijima poput ovog:
=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16,,,-1)