====== Funkcja INDEKS ======
Z ''WYSZUKAJ.PIONOWO'' jest taki problem, że wyniki szukania muszą się znajdować w kolumnach po kolumnie na podstawie której szukamy dane. Jeżeli kolumna na podstawie której szukamy dane to kolumna C a dane są w A i B to możemy użyć:
**Arkusz z którego pobieramy dane**. Aby funkcja działała arkusz musi mieć nazwę **dane_szukane**.
^ - ^ A ^ B ^ C ^
^ 1 ^ Ksywa ^ Płeć ^ PESEL ^
| 2 | Johny | Facet | 1234 |
| 3 | Lola | Baba | 4321 |
| 4 | Jenny | Baba | 1432 |
| 5 | Adam | Facet | 3241 |
| 6 | Stefan | Facet | 1122 |
Dane w kolumnie ''C'' powinny być danymi unikalnymi jednoznacznie określającymi numer rekordu z szukanymi danymi.
**W poniższym arkuszu o dowolnej nazwie wprowadzamy funkcje**
=INDEKS($dane_szukane.A$2:A$6;PODAJ.POZYCJĘ(A2;$dane_szukane.C$2:C$6;0))
dla kolumny A
=INDEKS($dane_szukane.B$2:B$6;PODAJ.POZYCJĘ(A2;$dane_szukane.C$2:C$6;0))
dla kolumny B
^ - ^ A ^ B ^ C ^
^ 1 ^ PESEL ^ Ksywa ^ Płeć ^
| 2 | 1432 | =INDEKS($dane_szukane.A$2:A$6;PODAJ.POZYCJĘ(A2;$dane_szukane.C$2:C$6;0)) | =INDEKS($dane_szukane.B$2:B$6;PODAJ.POZYCJĘ(A2;$dane_szukane.C$2:C$6;0)) |
| 3 | 3241 | =INDEKS($dane_szukane.A$2:A$6;PODAJ.POZYCJĘ(A3;$dane_szukane.C$2:C$6;0)) | =INDEKS($dane_szukane.B$2:B$6;PODAJ.POZYCJĘ(A3;$dane_szukane.C$2:C$6;0)) |
| 4 | 1122 | =INDEKS($dane_szukane.A$2:A$6;PODAJ.POZYCJĘ(A4;$dane_szukane.C$2:C$6;0))| =INDEKS($dane_szukane.B$2:B$6;PODAJ.POZYCJĘ(A4;$dane_szukane.C$2:C$6;0)) |
| 5 | 1234 | =INDEKS($dane_szukane.A$2:A$6;PODAJ.POZYCJĘ(A5;$dane_szukane.C$2:C$6;0)) | =INDEKS($dane_szukane.B$2:B$6;PODAJ.POZYCJĘ(A5;$dane_szukane.C$2:C$6;0)) |
| 6 | 4321 | =INDEKS($dane_szukane.A$2:A$6;PODAJ.POZYCJĘ(A6;$dane_szukane.C$2:C$6;0))| =INDEKS($dane_szukane.B$2:B$6;PODAJ.POZYCJĘ(A6;$dane_szukane.C$2:C$6;0)) |
**
Otrzymamy poniższy wynik**
^ - ^ A ^ B ^ C ^
^ 1 ^ PESEL ^ Ksywa ^ Płeć ^
| 2 | 1432 | Jenny | Baba |
| 3 | 3241 | Adam | Facet |
| 4 | 1122 | Stefan | Facet |
| 5 | 1234 | Johny | Facet |
| 6 | 4321 | Lola | Baba |
Dane w kolumnie ''A'' mogą się powtarzać ale wówczas otrzymamy zdublowane wyniki wyszukiwania.\\
W pozostałych kolumnach otrzymujemy wynik działania w/w funkcji.
Uzupełnienie o funkcję ''ADR.POŚR'' i ''NIEPUSTE''. W niektórych wersjach ''ILE.NIEPUSTYCH''.
=INDEKS(ADR.POŚR("$dane_szukane.A$2:A" & NIEPUSTE($dane_szukane.$C:$C));PODAJ.POZYCJĘ(A2;ADR.POŚR("$dane_szukane.C$2:C" & NIEPUSTE($dane_szukane.$C:$C));0))
dla kolumny A
=INDEKS(ADR.POŚR("$dane_szukane.B$2:B" & NIEPUSTE($dane_szukane.$C:$C));PODAJ.POZYCJĘ(A2;ADR.POŚR("$dane_szukane.C$2:C" & NIEPUSTE($dane_szukane.$C:$C));0))
dla kolumny B
Uzupełnienie o funkcję ''JEŻELI.BRAK''.
=JEŻELI.BRAK(INDEKS(ADR.POŚR("$dane_szukane.A$2:A" & NIEPUSTE($dane_szukane.$C:$C));PODAJ.POZYCJĘ(A2;ADR.POŚR("$dane_szukane.C$2:C" & NIEPUSTE($dane_szukane.$C:$C));0));"BRAK DANYCH")
dla kolumny A
=JEŻELI.BRAK(INDEKS(ADR.POŚR("$dane_szukane.B$2:B" & NIEPUSTE($dane_szukane.$C:$C));PODAJ.POZYCJĘ(A2;ADR.POŚR("$dane_szukane.C$2:C" & NIEPUSTE($dane_szukane.$C:$C));0));"BRAK DANYCH")
dla kolumny B
Jeśli komórka nie zawiera danych pojawia nam się ''"zero"''. Aby temu zaradzić można dodać funkcję ''JEŻELI''.
=JEŻELI.BRAK(JEŻELI(INDEKS(ADR.POŚR("$dane_szukane.A$2:A" & NIEPUSTE($dane_szukane.$C:$C));PODAJ.POZYCJĘ(A2;ADR.POŚR("$dane_szukane.C$2:C" & NIEPUSTE($dane_szukane.$C:$C));0))=0;"";INDEKS(ADR.POŚR("$dane_szukane.A$2:A" & NIEPUSTE($dane_szukane.$C:$C));PODAJ.POZYCJĘ(A2;ADR.POŚR("$dane_szukane.C$2:C" & NIEPUSTE($dane_szukane.$C:$C));0)));"BRAK DANYCH")
Także, funkcja **INDEKS** może zastąpić **WYSZUKAJ.PIONOWO**, ale wymaga użycia jej w połączeniu z **PODAJ.POZYCJĘ**. Jest to bardziej elastyczne rozwiązanie, ponieważ:
* Działa poprawnie nawet wtedy, gdy kolumna wynikowa znajduje się na lewo od kolumny wyszukiwania.
* Nie wymaga, aby dane były posortowane.
* Nie ogranicza się do wyszukiwania tylko w pierwszej kolumnie zakresu.
* Gdy masz do czynienia z dużymi zestawami danych – **INDEKS** działa wydajniej, ponieważ od razu wybiera właściwą wartość, a **WYSZUKAJ.PIONOWO** skanuje całą kolumnę.
* Gdy chcesz unikać problemów z wartością dokładnego dopasowania – **PODAJ.POZYCJĘ** pozwala na pełną kontrolę nad sposobem wyszukiwania.
=== Podsumowanie ===
* **INDEKS + PODAJ.POZYCJĘ** jest bardziej elastyczne niż **WYSZUKAJ.PIONOWO**, ale wymaga dwóch funkcji zamiast jednej.
* **WYSZUKAJ.PIONOWO** jest prostsze w użyciu, ale ma ograniczenia (np. nie może szukać w lewo).
Jeżeli masz problem działąniem funkcji sprawdź porównywane komórki za pomocą [[fedora:aplikacje:libreoffice:calc:czyliczba|CZY.LICZBA]]