====== 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]]