Excel vzorec: XLOOKUP se složitými několika kritérii -

Obsah

souhrn

Chcete-li vyhledat data na základě více komplexních kritérií, můžete použít funkci XLOOKUP s více výrazy založenými na logické logice. V zobrazeném příkladu je vzorec v G5:

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

S výchozím nastavením XLOOKUP pro režim shody (přesné) a režim vyhledávání (od prvního do posledního) odpovídá vzorec prvnímu záznamu, kde:

účet začíná „x“ AND region je „východ“ a měsíc NENÍ duben.

což je čtvrtý záznam (řádek 8) v ukázaném příkladu.

Vysvětlení

Normálně je funkce XLOOKUP nakonfigurována tak, aby hledala hodnotu ve vyhledávacím poli, které existuje v listu. Když se však kritéria použitá k přiřazení hodnoty stanou složitějšími, můžete použít logickou logiku k vytvoření vyhledávacího pole za běhu složeného pouze z 1 s a 0 s, pak vyhledejte hodnotu 1. Toto je přístup použitý v tomto příkladu:

=XLOOKUP(1,boolean_array,result_array)

V tomto příkladu jsou požadovaná kritéria:

účet začíná „x“ AND region je „východ“ a měsíc NENÍ duben.

Pro každé ze tří samostatných kritérií výše používáme samostatný logický výraz. První výraz používá funkci LEFT k otestování, zda Účet začíná na „x“:

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

Protože kontrolujeme dvanáct hodnot, výsledkem je pole s dvanácti hodnotami, jako je tato:

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

Druhý výraz testuje, zda je Region „východ“ pomocí operátoru rovná se (=):

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

Stejně jako dříve získáme další pole s dvanácti hodnotami TRUE FALSE:

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

Třetí výraz musí vyloučit měsíc duben. Nejjednodušší způsob, jak to udělat, je testovat za měsíc duben přímo pomocí funkce MĚSÍC:

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

Pak použijte funkci NOT k zvrácení výsledku:

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

který vytváří pole správně popisující „ne duben“:

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

Dále se všechna tři pole násobí dohromady a matematická operace vynutí hodnoty TRUE a FALSE na 1 s a 0 s:

(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 booleovské aritmetice funguje násobení jako logická funkce AND, takže konečným výsledkem je jedno pole jako toto:

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

Vzorec lze nyní přepsat takto:

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

S 1 jako vyhledávací hodnotou a výchozím nastavením pro režim shody (přesné) a režim vyhledávání (od prvního do posledního) odpovídá XLOOKUP první 1 (čtvrtá pozice) a vrátí odpovídající řádek v poli výsledků, což je B8: E8.

Poslední zápas

Nastavením volitelného argumentu režimu vyhledávání na -1 můžete vyhledat „poslední shodu“ se stejnými kritérii, jako je tato:

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

Zajímavé články...