Excel-formel: XLOOKUP med komplekse flere kriterier -

Indholdsfortegnelse

Resumé

For at slå op data baseret på flere komplekse kriterier kan du bruge funktionen XLOOKUP med flere udtryk baseret på boolsk logik. I det viste eksempel er formlen i G5:

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

Med XLOOKUPs standardindstillinger for matchtilstand (eksakt) og søgefunktion (først til sidste) matcher formlen den første post, hvor:

konto begynder med "x" OG region er "øst", og måned er IKKE april.

som er den fjerde post (række 8) i det viste eksempel.

Forklaring

Normalt er XLOOKUP-funktionen konfigureret til at lede efter en værdi i et opslagsarray, der findes på regnearket. Men når kriterierne, der bruges til at matche en værdi, bliver mere komplekse, kan du bruge boolsk logik til at oprette et opslagsarray på farten, der kun består af 1s og 0s, og derefter kigge efter værdien 1. Dette er fremgangsmåden, der anvendes i dette eksempel:

=XLOOKUP(1,boolean_array,result_array)

I dette eksempel er de krævede kriterier:

konto begynder med "x" OG region er "øst", og måned er IKKE april.

For hvert af de tre separate kriterier ovenfor bruger vi et separat logisk udtryk. Det første udtryk bruger VENSTRE-funktionen til at teste, om Konto begynder med "x":

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

Da vi kontrollerer tolv værdier, er resultatet en matrix med tolv værdier som denne:

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

Det andet udtryk tester, om Region er "øst" ved hjælp af operatoren lig med (=):

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

Som før får vi et andet array med tolv TRUE FALSE-værdier:

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

Det tredje udtryk skal udelukke april måned. Den nemmeste måde at gøre dette på er at teste i april måned direkte med MONTH-funktionen:

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

Brug derefter IKKE-funktionen til at vende resultatet:

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

som opretter en matrix, der korrekt beskriver "ikke april":

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

Derefter multipliceres alle tre arrays sammen, og matematikoperationen tvinger de SANDE og FALSE-værdier til 1s og 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)

I boolsk aritmetik fungerer multiplikation som den logiske funktion OG, så det endelige resultat er et enkelt array som dette:

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

Formlen kan nu omskrives således:

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

Med 1 som opslagsværdi og standardindstillinger for matchtilstand (nøjagtig) og søgefunktion (først til sidste) matcher XLOOKUP den første 1 (fjerde position) og returnerer den tilsvarende række i resultatarrayet, som er B8: E8.

Sidste kamp

Ved at indstille det valgfri søgefunktionsargument til -1 kan du finde den "sidste kamp" med de samme kriterier som dette:

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

Interessante artikler...