Formuła programu Excel: XLOOKUP ze złożonymi wieloma kryteriami -

Spisie treści

Podsumowanie

Aby wyszukiwać dane w oparciu o wiele złożonych kryteriów, możesz użyć funkcji XLOOKUP z wieloma wyrażeniami opartymi na logice boolowskiej. W pokazanym przykładzie formuła w G5 to:

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

Przy domyślnych ustawieniach XLOOKUP dla trybu dopasowania (dokładnego) i trybu wyszukiwania (od pierwszego do ostatniego), formuła pasuje do pierwszego rekordu, gdzie:

konto zaczyna się od „x” ORAZ region to „wschód”, a miesiącem NIE jest kwiecień.

co jest czwartym rekordem (wiersz 8) w pokazanym przykładzie.

Wyjaśnienie

Zwykle funkcja XLOOKUP jest skonfigurowana do wyszukiwania wartości w tablicy wyszukiwania, która istnieje w arkuszu. Jednak gdy kryteria używane do dopasowania wartości stają się bardziej złożone, można użyć logiki boolowskiej, aby utworzyć w locie tablicę wyszukiwania składającą się tylko z jedynek i zer, a następnie poszukać wartości 1. Oto podejście zastosowane w tym przykładzie:

=XLOOKUP(1,boolean_array,result_array)

W tym przykładzie wymagane kryteria to:

konto zaczyna się od „x” ORAZ region to „wschód”, a miesiącem NIE jest kwiecień.

Dla każdego z trzech oddzielnych kryteriów powyżej używamy oddzielnego wyrażenia logicznego. Pierwsze wyrażenie używa funkcji LEFT, aby sprawdzić, czy konto zaczyna się od „x”:

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

Ponieważ sprawdzamy dwanaście wartości, wynikiem jest tablica zawierająca dwanaście wartości, takich jak ta:

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

Drugie wyrażenie sprawdza, czy Region ma wartość „wschód”, używając operatora równości (=):

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

Jak poprzednio, otrzymujemy kolejną tablicę z dwunastoma wartościami TRUE FALSE:

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

Trzecie wyrażenie musi wykluczać kwiecień. Najłatwiej to zrobić, testując miesiąc kwiecień bezpośrednio za pomocą funkcji MIESIĄC:

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

Następnie użyj funkcji NOT, aby odwrócić wynik:

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

co tworzy tablicę poprawnie opisującą „nie kwiecień”:

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

Następnie wszystkie trzy tablice są mnożone razem, a operacja matematyczna przekształca wartości PRAWDA i FAŁSZ na 1 i 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)

W arytmetyce boolowskiej mnożenie działa jak funkcja logiczna AND, więc ostatecznym wynikiem jest pojedyncza tablica w następujący sposób:

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

Formułę można teraz przepisać w następujący sposób:

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

Z 1 jako wartością wyszukiwania i domyślnymi ustawieniami trybu dopasowania (dokładnego) i trybu wyszukiwania (od pierwszego do ostatniego), XLOOKUP dopasowuje pierwsze 1 (czwarta pozycja) i zwraca odpowiedni wiersz w tablicy wyników, czyli B8: E8.

Ostatni mecz

Ustawiając opcjonalny argument trybu wyszukiwania na -1, możesz znaleźć „ostatnie dopasowanie” z takimi samymi kryteriami, jak to:

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

Interesujące artykuły...