Formuły i funkcje cz. 3: funkcje wyszukiwania i odwołań (2)

Z powodu ograniczeń funkcji typu WYSZUKAJ, zaawansowani użytkownicy używają bardzo elastycznej kombinacji wspomnianych powyżej funkcji INDEKS oraz PODAJ.POZYCJĘ. Mechanizm działania jest tu podobny do wariantu funkcji WYSZUKAJ: funkcja PODAJ.POZYCJĘ zwraca numer kolejny znalezionego elementu licząc od początku podanej tablicy, a funkcja INDEKS zwraca wartość leżącą na tej pozycji (z dowolnego zakresu).

Kombinacja funkcji PODAJ.POZYCJĘ oraz INDEKS (tzw. INDEX+MATCH)

Najważniejszym zastosowaniem tej kombinacji funkcji jest zwrócenie wyniku np. z lewej kolumny zamiast po prawej, jak to robi WYSZUKAJ.PIONOWO.
Mamy tu poza tym swobodę w określaniu precyzji dopasowania szukanej wartości w funkcji PODAJ.POZYCJĘ. Funkcja ta może znaleźć wartość dokładną, a w przypadku jej braku mniejszą lub większą od szukanej (opcjonalny parametr).
Kolejnym zastosowaniem jest wyszukiwanie dwu-wymiarowe – funkcja zwracająca wynik, INDEKS, może przesunąć wskazanie docelowej komórki o pewną liczbę wierszy oraz kolumn (funkcje typu WYSZUKAJ operują tylko na jednej z tych wartości). Stosujemy tu wówczas podwójne dopasowanie:
INDEKS(…; PODAJ.POZYCJĘ(…); PODAJ.POZYCJĘ(…))

Wyszukiwanie częściowe

W przeciwieństwie do funkcji typu WYSZUKAJ, możemy tu także używać znaków wieloznacznych (wildcards), czyli wyszukiwać dopasowanie niepełne, wpisując początek szukanego słowa, np. PODAJ.POZYCJĘ(„chleb*”;…) – znak gwiazdki zastępuje dowolną liczbę innych znaków, więc możemy znaleźć pierwsze wystąpienie dowolnego towaru zaczynającego się od podanego słowa przez gwiazdką.

Wyszukiwanie macierzowe

Przykłady, gdy kombinacja tych dwóch funkcji pokazuje swoją siłę można by mnożyć i można ich wiele znaleźć w literaturze dla zaawansowanych użytkowników. Jeszcze zaś więcej możliwości uzyskujemy w połączeniu z omawianą wcześniej techniką formuł macierzowych – możemy dopasować wiele kryteriów, np. w przykładzie poniżej (źródło: excelchamps.com), mamy trzy kryteria w wierszu 14, które muszą być spełnione wszystkie razem, mamy zaś w wyniku wskazać cenę w komórce D14:

Formuła w komórce D14 przyjmie postać:
{=INDEKS(D2:D11, PODAJ.POZYCJĘ (1,(A14=A2:A11)*(B14=B2:B11) *(C14=C2:C11),0)) }
Zwracamy uwagę na nawiasy klamerkowe, świadczące o tym, że formuła jest macierzowa, wprowadzona z użyciem kombinacji klawiszy Ctrl+Shift+Enter.
Wyszukujemy tu nie pozycje podanych w wierszu 14 wartości w zakresach powyżej, ale pozycję cyfry „1” w wektorze macierzy iloczynu logicznego spełniania warunków wielu porównań (w przykładzie: dwóch), np.{0;0;0;0;0;0;1;0;0;0}. Ta pozycja (7) jest następnie użyta do zwrócenia wartości z pozycji 7 w kolumnie ceny (D) = 700.