=PODAJ.POZYCJĘ(E2;A2:A6;0) (po angielsku MATCH) zwraca pozycję wartości z E2 w zakresie A2:A6: 1 dla pierwszej komórki, 2 dla drugiej i tak dalej. 0 oznacza dopasowanie dokładne. PODAJ.POZYCJĘ zwraca liczbę, a nie samą wartość, i dlatego zwykle łączy się ją z INDEKS. Tabele pokazują formuły po angielsku, =MATCH(E2,A2:A6,0), ale możesz w nich wpisywać formuły także po polsku, ze średnikami.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Look for | Position | |
| 2 | Apple | Fruit | $1.20 | Bread | 4 | |
| 3 | Pear | Fruit | $1.50 | |||
| 4 | Carrot | Vegetable | $0.80 | |||
| 5 | Bread | Bakery | $2.40 | |||
| 6 | Milk | Dairy | $1.10 |
=PODAJ.POZYCJĘ(E2;A2:A6;0)Bread to czwarta komórka A2:A6, więc F2 pokazuje 4. Liczenie zaczyna się od pierwszej komórki zakresu, a nie od wiersza 1 arkusza: zmień zakres na A1:A6, a odpowiedź wyniesie 5. Wpisz Kiwi w E2, a PODAJ.POZYCJĘ zwróci #N/D! (po angielsku #N/A; tabele pokazują angielskie nazwy błędów).
Składnia funkcji PODAJ.POZYCJĘ i typy dopasowania
=MATCH(lookup_value, lookup_array, [match_type])
| match_type | Co znajduje | Lista musi być |
|---|---|---|
0 | Pierwszą wartość dokładnie równą lookup_value. Dla tekstu dozwolone symbole wieloznaczne. | w dowolnej kolejności |
1 albo pominięty | Największą wartość mniejszą lub równą lookup_value. | posortowana rosnąco |
-1 | Najmniejszą wartość większą lub równą lookup_value. | posortowana malejąco |
Domyślny jest 1, a nie 0. PODAJ.POZYCJĘ bez trzeciego argumentu na nieposortowanej liście nazw nie zgłasza błędu: zwraca pozycję, która może należeć do innego wiersza. Wpisuj 0 za każdym razem, gdy szukasz tekstu, kodów albo identyfikatorów.
Dopasowanie przybliżone: w którym przedziale jest wartość
Z typem dopasowania 1 PODAJ.POZYCJĘ odpowiada na pytanie „który przedział”: zwraca pozycję ostatniego progu, który wartość osiągnęła. Tutaj wynik 75 przekroczył 0, 60 i 70, więc jest w przedziale 3, ocena C.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Min score | Grade | Score | Band | Grade | |
| 2 | 0 | F | 75 | 3 | C | |
| 3 | 60 | D | 59 | 1 | F | |
| 4 | 70 | C | 90 | 5 | A | |
| 5 | 80 | B | 100 | 5 | A | |
| 6 | 90 | A |
=PODAJ.POZYCJĘ(D2;$A$2:$A$6;1)59 jest nadal poniżej 60, więc to przedział 1 (F). 90 to dokładne dopasowanie do ostatniego progu, a 100 jest powyżej niego, więc oba trafiają do przedziału 5 (A). Progi muszą zostać w kolejności rosnącej: dzięki temu PODAJ.POZYCJĘ zatrzymuje się we właściwym miejscu. W polskim Excelu formuły z E2 i F2 to =PODAJ.POZYCJĘ(D2;$A$2:$A$6;1) i =INDEKS($B$2:$B$6;E2).
Typ dopasowania -1 to lustrzane odbicie dla listy posortowanej od największej do najmniejszej. Zwraca pozycję najmniejszej wartości, która jest jeszcze większa lub równa szukanej: przy rozmiarach {50;25;12;5} w kolumnie =PODAJ.POZYCJĘ(18;D2:D5;-1) zwraca 2, czyli rozmiar 25, najmniejszy, który pomieści 18.
Symbole wieloznaczne i wielkość liter
PODAJ.POZYCJĘ nie rozróżnia wielkości liter, a przy typie dopasowania 0 przyjmuje symbole wieloznaczne * (dowolne znaki) i ? (dokładnie jeden znak). Aby rozróżniać wielkość liter, porównaj listę funkcją PORÓWNAJ (EXACT) i szukaj pierwszego PRAWDA.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Product | Category | Price | Starts with "C" | 3 |
| 2 | Apple | Fruit | $1.20 | Lower case "milk" | 5 |
| 3 | Pear | Fruit | $1.50 | Exactly "milk" | #N/A |
| 4 | Carrot | Vegetable | $0.80 | ||
| 5 | Bread | Bakery | $2.40 | ||
| 6 | Milk | Dairy | $1.10 |
=PODAJ.POZYCJĘ("C*";A2:A6;0)"C*" pasuje do Carrot, pozycja 3. "milk" znajduje Milk na pozycji 5, bo wielkość liter jest ignorowana. Wersja z PORÓWNAJ porównuje każdą nazwę z "milk" z uwzględnieniem wielkości liter, nie znajduje żadnego PRAWDA i zwraca #N/D!. W polskim Excelu ta formuła to =PODAJ.POZYCJĘ(PRAWDA;PORÓWNAJ(A2:A6;"milk");0). Zmień A6 na milk, a zwróci 5. W Excelu 2019 i starszym zatwierdź formułę z PORÓWNAJ przez Ctrl+Shift+Enter (Cmd+Shift+Enter na Macu); w Excelu 2021 i Microsoft 365 wystarczy Enter. Tylda sprawia, że symbol wieloznaczny jest traktowany dosłownie: "~*" szuka prawdziwej gwiazdki.
Czy wartość jest na liście
PODAJ.POZYCJĘ zwraca liczbę, gdy znajdzie wartość, i #N/D!, gdy jej nie znajdzie. CZY.LICZBA zamienia to w PRAWDA albo FAŁSZ, co daje szybki test „czy to jest na liście”.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ordered | In stock? | In stock | |
| 2 | Pear | Yes | Apple | |
| 3 | Kiwi | No | Pear | |
| 4 | Milk | Yes | Bread | |
| 5 | Plum | No | Milk | |
| 6 | Bread | Yes |
=JEŻELI(CZY.LICZBA(PODAJ.POZYCJĘ(A2;$D$2:$D$5;0));"Yes";"No")Pear, Milk i Bread są w D2:D5, więc pokazują Yes. Kiwi i Plum pokazują No. W polskim Excelu formuła z B2 to =JEŻELI(CZY.LICZBA(PODAJ.POZYCJĘ(A2;$D$2:$D$5;0));"Yes";"No"). LICZ.JEŻELI($D$2:$D$5;A2)>0 daje tę samą odpowiedź; PODAJ.POZYCJĘ zatrzymuje się na pierwszym trafieniu, a LICZ.JEŻELI liczy wszystkie.
PODAJ.POZYCJĘ, X.DOPASUJ i INDEKS
PODAJ.POZYCJĘ to połowa klasycznego wyszukiwania =INDEKS(C2:C6;PODAJ.POZYCJĘ(E2;A2:A6;0)), które wyjaśnia strona INDEKS i PODAJ.POZYCJĘ. Excel 2021 i Microsoft 365 dodają X.DOPASUJ (XMATCH), która domyślnie szuka dopasowania dokładnego, potrafi szukać od ostatniego elementu w górę i obsługuje „następne większe” bez sortowania malejącego. PODAJ.POZYCJĘ nadal działa wszędzie, także w plikach, które muszą się otwierać w Excelu 2019.
Ćwiczenie: pozycja pracownika
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Name | Team | Start year | Name | Position | |
| 2 | Ana | Sales | 2019 | Dev | ||
| 3 | Ben | Support | 2021 | |||
| 4 | Cara | Sales | 2018 | |||
| 5 | Dev | Finance | 2022 | |||
| 6 | Eli | Support | 2020 | |||
| 7 | Fay | Finance | 2023 |
Twoja kolej: W F2 zwróć pozycję imienia z E2 na liście w kolumnie A.
Najczęściej zadawane pytania
Co zwraca PODAJ.POZYCJĘ w Excelu?
Pozycję, a nie wartość: =PODAJ.POZYCJĘ("Bread";A2:A6;0) zwraca 4, gdy Bread jest czwartą komórką A2:A6. Połącz ją z INDEKS, aby pobrać wartość z tej pozycji w innej kolumnie.
Czym różnią się typy dopasowania 0, 1 i -1?
0 znajduje dopasowanie dokładne przy dowolnej kolejności. 1 (domyślny) znajduje największą wartość mniejszą lub równą szukanej i wymaga listy posortowanej rosnąco. -1 znajduje najmniejszą wartość większą lub równą szukanej i wymaga listy posortowanej malejąco.
Czy PODAJ.POZYCJĘ rozróżnia wielkość liter?
Nie. =PODAJ.POZYCJĘ("milk";A2:A6;0) znajduje Milk. Aby rozróżniać wielkość liter, użyj =PODAJ.POZYCJĘ(PRAWDA;PORÓWNAJ(A2:A6;"milk");0), co w Excelu 2019 i starszym wymaga Ctrl+Shift+Enter (Cmd+Shift+Enter na Macu).
Jak sprawdzić funkcją PODAJ.POZYCJĘ, czy wartość jest na liście?
PODAJ.POZYCJĘ zwraca #N/D!, gdy wartości brakuje, więc sprawdź, czy zwróciła liczbę: =CZY.LICZBA(PODAJ.POZYCJĘ(A2;$D$2:$D$5;0)) daje PRAWDA albo FAŁSZ. Obejmij to funkcją JEŻELI, aby pokazać własny tekst.