Menu

Excel: wyszukiwanie z wieloma kryteriami (X.WYSZUKAJ)

=X.WYSZUKAJ(1;(A2:A7=E2)*(B2:B7=F2);C2:C7) zwraca wartość z wiersza, w którym kolumna A pasuje do E2, a kolumna B do F2. Wersja z INDEKS i PODAJ.POZYCJĘ, kolumna pomocnicza dla WYSZUKAJ.PIONOWO i FILTRUJ dla wszystkich dopasowań.

Każdy arkusz na tej stronie działa na żywo: zmień liczbę albo formułę, a się przeliczy.

=X.WYSZUKAJ(1;(A2:A7=E2)*(B2:B7=F2);C2:C7) zwraca cenę z wiersza, w którym produkt to E2 i rozmiar to F2. Każde porównanie sprawdza każdy wiersz, ich pomnożenie daje 1 tylko tam, gdzie oba są spełnione, a X.WYSZUKAJ (XLOOKUP) szuka tej jedynki. Wymaga Excela 2021 albo Microsoft 365; wersja z INDEKS i PODAJ.POZYCJĘ poniżej działa w każdej wersji. Tabele pokazują formuły po angielsku, =XLOOKUP(1,(A2:A7=E2)*(B2:B7=F2),C2:C7), ale możesz w nich wpisywać formuły także po polsku, ze średnikami.

Cena według produktu i rozmiaru
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50TeaLarge$3.00
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.W polskim Excelu: =X.WYSZUKAJ(1;(A2:A7=E2)*(B2:B7=F2);C2:C7)

Tea i Large spotykają się w wierszu 5, więc G2 zwraca $3.00. Wybierz Juice i Small: znowu $3.00, ale z innego wiersza. Dodaj czwarty argument na przypadek, gdy żaden wiersz nie pasuje do obu: =X.WYSZUKAJ(1;(A2:A7=E2)*(B2:B7=F2);C2:C7;"No such item").

Jak działają mnożone warunki

A2:A7=E2 porównuje każdy produkt z E2 i zwraca sześć wartości PRAWDA albo FAŁSZ. Pomnożenie dwóch takich list zamienia PRAWDA w 1, a FAŁSZ w 0, a wiersz daje 1 tylko wtedy, gdy ma 1 w obu. Kolumna D pokazuje tę listę, rozlaną z jednej formuły.

Tablica, którą przeszukuje X.WYSZUKAJ
D2
ABCDEFG
1ProductSizePriceBoth matchProductSize
2CoffeeSmall$2.500TeaLarge
3CoffeeLarge$3.500
4TeaSmall$2.000
5TeaLarge$3.001
6JuiceSmall$3.000
7JuiceLarge$4.000
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.W polskim Excelu: =(A2:A7=F2)*(B2:B7=G2)

Tylko D5 wynosi 1. Zmień F2 albo G2, a jedynka się przesunie. Każde dodatkowe kryterium to jeszcze jedno *(zakres=wartość), a warunki nie muszą być równościami: *(C2:C7<3) dodaje „cena poniżej 3”. Każdy zakres musi obejmować te same wiersze (A2:A7, B2:B7, C2:C7): jeśli zwracany zakres ma inny rozmiar niż warunki, X.WYSZUKAJ zwraca #ARG! (po angielsku #VALUE!; tabele pokazują angielskie nazwy błędów).

INDEKS i PODAJ.POZYCJĘ z wieloma kryteriami

W Excelu 2019 i starszym PODAJ.POZYCJĘ może przeszukać tę samą tablicę w poszukiwaniu 1, a INDEKS zwraca cenę z tej pozycji.

Dwa kryteria z INDEKS i PODAJ.POZYCJĘ
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50CoffeeLarge$3.50
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.W polskim Excelu: =INDEKS(C2:C7;PODAJ.POZYCJĘ(1;(A2:A7=E2)*(B2:B7=F2);0))

Coffee i Large to pozycja 2 tablicy, a INDEKS zwraca $3.50. W polskim Excelu formuła to =INDEKS(C2:C7;PODAJ.POZYCJĘ(1;(A2:A7=E2)*(B2:B7=F2);0)). W Excelu 2019 i starszym to formuła tablicowa: zamiast Enter naciśnij Ctrl+Shift+Enter (Cmd+Shift+Enter na Macu), a Excel pokaże ją w nawiasach klamrowych. Samo Enter zwykle zwraca tam #N/D! albo #ARG!. W Excelu 365 wystarczy Enter. Postać z jednym kryterium jest na stronie INDEKS i PODAJ.POZYCJĘ.

Połącz kryteria w jeden klucz

Drugi sposób to zamiana dwóch kryteriów w jedno przez ich połączenie. WYSZUKAJ.PIONOWO potrzebuje połączonych wartości w kolumnie pomocniczej na początku tabeli (tę wersję pokazuje strona WYSZUKAJ.PIONOWO). X.WYSZUKAJ potrafi połączyć zakresy w samej formule, więc kolumna pomocnicza nie jest potrzebna.

Produkt i rozmiar połączone w jeden klucz
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50JuiceLarge$4.00
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.W polskim Excelu: =X.WYSZUKAJ(E2&"|"&F2;A2:A7&"|"&B2:B7;C2:C7)

A2:A7&"|"&B2:B7 buduje sześć kluczy, takich jak Juice|Large, a X.WYSZUKAJ znajduje wśród nich Juice|Large: $4.00. W polskim Excelu formuła to =X.WYSZUKAJ(E2&"|"&F2;A2:A7&"|"&B2:B7;C2:C7). Między częściami wstaw separator. Bez niego „AB” i „C” łączą się w to samo „ABC” co „A” i „BC”, a wyszukiwanie może zwrócić niewłaściwy wiersz.

Jeśli szukana wartość jest liczbą, a każda kombinacja występuje raz, SUMA.WARUNKÓW (SUMIFS) daje tę samą odpowiedź bez żadnej tablicy: =SUMA.WARUNKÓW(C2:C7;A2:A7;E2;B2:B7;F2). Gdy nic nie pasuje, zwraca 0 zamiast błędu, co może ukryć literówkę.

Wszystkie dopasowania z FILTRUJ

X.WYSZUKAJ oraz INDEKS i PODAJ.POZYCJĘ zwracają pierwszy pasujący wiersz. Gdy pasuje kilka wierszy, a chcesz wszystkie, użyj funkcji FILTRUJ (FILTER) z tymi samymi warunkami.

Wszystkie zamówienia Phone z North
F2
ABCDEFG
1RegionProductQuarterSalesMatches
2NorthLaptopQ1120Q1210
3NorthPhoneQ1210Q2225
4SouthLaptopQ195Q3240
5NorthPhoneQ2225
6SouthPhoneQ2180
7NorthLaptopQ2135
8NorthPhoneQ3240
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.W polskim Excelu: =FILTRUJ(C2:D8;(A2:A8="North")*(B2:B8="Phone"))

Trzy wiersze to North i Phone, więc F2 rozlewa ich kwartały i sprzedaż do F2:G4. W polskim Excelu formuła to =FILTRUJ(C2:D8;(A2:A8="North")*(B2:B8="Phone")). Zmień A3 na South, a lista skurczy się do dwóch. Jeśli żaden wiersz nie pasuje, FILTRUJ zwraca #OBL! (#CALC!); trzeci argument, na przykład "None", pokazuje zamiast tego tekst. Więcej opcji opisuje strona FILTRUJ.

Ćwiczenie: trzy kryteria

Sprzedaż według regionu, produktu i kwartału
G4
ABCDEFG
1RegionProductQuarterSalesRegionSouth
2NorthLaptopQ1120ProductLaptop
3NorthLaptopQ2135QuarterQ2
4NorthPhoneQ1210Sales
5SouthLaptopQ195
6SouthPhoneQ2180
7SouthLaptopQ2110
8NorthPhoneQ2225
Kliknij komórkę, aby zobaczyć jej formułę. Zmień liczbę albo formułę, a arkusz przeliczy się na nowo.

Twoja kolej: Zwróć w G4 sprzedaż dla regionu z G1, produktu z G2 i kwartału z G3.

Najczęściej zadawane pytania

Jak użyć X.WYSZUKAJ z wieloma kryteriami?

Pomnóż po jednym porównaniu na każde kryterium i szukaj 1: =X.WYSZUKAJ(1;(A2:A7=E2)*(B2:B7=F2);C2:C7). Każde porównanie daje PRAWDA albo FAŁSZ dla każdego wiersza, iloczyn wynosi 1 tylko tam, gdzie wszystkie dają PRAWDA, a X.WYSZUKAJ zwraca pierwszy taki wiersz.

Jak użyć INDEKS i PODAJ.POZYCJĘ z dwoma kryteriami?

Użyj tych samych mnożonych warunków w PODAJ.POZYCJĘ: =INDEKS(C2:C7;PODAJ.POZYCJĘ(1;(A2:A7=E2)*(B2:B7=F2);0)). W Excelu 2019 i starszym zatwierdź formułę przez Ctrl+Shift+Enter (Cmd+Shift+Enter na Macu).

Czy WYSZUKAJ.PIONOWO może użyć dwóch kryteriów?

Nie bezpośrednio. Dodaj na początku tabeli kolumnę pomocniczą, która łączy obie wartości, na przykład =A2&"|"&B2, a potem wyszukaj połączoną wartość: =WYSZUKAJ.PIONOWO(E2&"|"&F2;tabela_pomocnicza;kolumna;FAŁSZ).

Czy SUMA.WARUNKÓW może zastąpić wyszukiwanie z dwoma kryteriami?

Tak, gdy wartość jest liczbą, a każda kombinacja występuje raz: =SUMA.WARUNKÓW(C2:C7;A2:A7;E2;B2:B7;F2). Zwraca 0 zamiast #N/D!, gdy żaden wiersz nie pasuje, i sumuje wartości, gdy kombinacja występuje dwa razy.

Jak wyszukiwać z kryteriami LUB?

Dodawaj warunki zamiast je mnożyć: (A2:A7="Tea")+(A2:A7="Juice") daje 1 lub więcej tam, gdzie spełniony jest którykolwiek. Szukaj wartości większej od 0, na przykład =X.WYSZUKAJ(PRAWDA;((A2:A7="Tea")+(A2:A7="Juice"))>0;C2:C7).

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ