![](https://cdn.wiki-base.com/2921036/excel_formula_xlookup_with_complex_multiple_criteria__2.png.webp)
Yhteenveto
Voit hakea tietoja useista monimutkaisista ehdoista käyttämällä XLOOKUP-funktiota useilla lausekkeilla, jotka perustuvat loogiseen logiikkaan. Esitetyssä esimerkissä kaava G5: ssä on:
=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16)
XLOOKUPin oletusasetuksilla vastaavuustilalle (tarkka) ja hakutilalle (ensimmäisestä viimeiseen) kaava vastaa ensimmäistä tietuetta, jossa:
tili alkaa "x": llä JA alue on "itä", ja kuukausi EI OLE huhtikuu.
mikä on näytetyn esimerkin neljäs tietue (rivi 8).
Selitys
Normaalisti XLOOKUP-toiminto on määritetty etsimään arvoa laskentataulukossa olevasta hakutaulukosta. Kuitenkin, kun arvon vastaavuuden kriteerit muuttuvat monimutkaisemmiksi, voit loogisen logiikan avulla luoda etsintäryhmän lennossa, joka koostuu vain 1: stä ja 0: sta, ja etsi sitten arvo 1. Tätä lähestymistapaa käytetään tässä esimerkissä:
=XLOOKUP(1,boolean_array,result_array)
Tässä esimerkissä vaaditut kriteerit ovat:
tili alkaa "x": llä JA alue on "itä", ja kuukausi EI OLE huhtikuu.
Kullekin edellä olevalle kolmelle erilliselle kriteerille käytämme erillistä loogista lauseketta. Ensimmäinen lauseke käyttää VASEN-funktiota testatakseen, aloitetaanko tilin tunnuksella "x":
LEFT(B5:B16)="x" // account begins with "x"
Koska tarkistamme kaksitoista arvoa, tuloksena on taulukko, jossa on kaksitoista arvoa:
(TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE)
Toinen lauseke testaa, onko alue "itä", käyttämällä operaattoria, joka on sama kuin (=)
C5:C16="east" // region is east
Kuten aiemmin, saamme toisen taulukon, jolla on kaksitoista TOSI EPÄTOSI-arvoa:
(FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE)
Kolmas lauseke on suljettava pois huhtikuusta. Helpoin tapa tehdä tämä on testata huhtikuu suoraan MONTH-toiminnolla:
MONTH(D5:D16)=4 // month is April
Käytä sitten EI-toimintoa kääntääksesi tuloksen:
NOT(MONTH(D5:D16)=4) // month is not April
joka luo taulukon, joka kuvaa oikein "ei huhtikuu":
(FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE)
Seuraavaksi kaikki kolme taulukkoa kerrotaan yhdessä, ja matemaattinen operaatio pakottaa TOSI- ja EPÄTOSI-arvot arvoksi 1 ja 0:
(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)
Boolen aritmeikassa kertolasku toimii kuten looginen funktio AND, joten lopputulos on yksi tällainen taulukko:
(0;0;0;1;1;0;0;0;0;1;0;1)
Kaava voidaan nyt kirjoittaa uudestaan seuraavasti:
=XLOOKUP(1,(0;0;0;1;1;0;0;0;0;1;0;1),B5:E16)
Kun hakuarvo on 1 ja vastaavuustilan (tarkka) ja hakutilan (ensimmäisestä viimeiseen) oletusasetukset, XLOOKUP vastaa ensimmäistä 1 (neljäs sijainti) ja palauttaa vastaavan rivin tulosryhmässä, joka on B8: E8.
Viimeinen ottelu
Asettamalla valinnaisen hakutilan argumentiksi -1 voit etsiä "viimeisen vastaavuuden" samoilla ehdoilla kuin tämä:
=XLOOKUP(1,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4),B5:E16,,,-1)