W dzisiejszym poście nauczymy się jak zmusić funkcję INDEKS, aby zwracała wiele wartości do jednej komórki.

Funkcja INDEKS ma możliwość zwrócić z przykładowej tablicy danych albo całą kolumnę albo cały wiersz (rys. nr 1).

Rys. nr 1 – argumenty funkcji INDEKS
Rys. nr 1 – argumenty funkcji INDEKS

Pierwszym argumentem funkcji jest tablica, czyli zaznaczony obszar danych (tabela). W naszym małym przykładzie chcemy, aby funkcja zwróciła nam wiersz, więc wystarczy jako drugi argument funkcji (nr_wiersza) podać numer wiersza, z którego dane chcemy uzyskać. Zapis funkcji będzie wyglądał następująco:

=INDEKS(A9:A15;0)

Kiedy podejrzymy sobie wyniki formuły w trybie edycji komórki za pomocą klawisza F9, otrzymamy wszystkie dane z zaznaczonego obszaru (rys. nr 2).

Rys. nr 2 – wyniki funkcji INDEKS
Rys. nr 2 – wyniki funkcji INDEKS

Funkcja ta zwróciła nam wszystkie wartości z kolumny, problem pojawia się wtedy, kiedy chcemy wyciągnąć tylko kilka wartości. Możemy określić je ręcznie zapisując poszczególne numery tych wartości w nawiasach klamrowych. Zapis powinien wyglądać następująco:

=INDEKS(A9:A15;{1;3;5})

Pojawia się wtedy problem, ponieważ przy takim zapisie funkcja INDEKS zwraca nam tylko jedną wartość (rys. nr 3).

Rys. nr 3 – tylko jedna wartość zwrócona przez funkcję INDEKS
Rys. nr 3 – tylko jedna wartość zwrócona przez funkcję INDEKS

Tak działają funkcje klasycznego Excela. W nowych updatach firmy Microsoft zostały wprowadzone ulepszenia, funkcje zostały poprawione aby lepiej spełniać potrzeby użytkowników.

Podczas rozwiązywania wyzwania 13 (https://www.youtube.com/watch?v=VYjplS87Z‑o) szukaliśmy rozwiązania, które zwróciło by dwie wartości w jednej komórce. Udało się to zrobić dla wartości tekstowych (rys. nr 4).

Rys. nr 4 – skomplikowany zapis formuły, która zwraca dwie wartości do jednej komórki
Rys. nr 4 – skomplikowany zapis formuły, która zwraca dwie wartości do jednej komórki

Jeśli jesteś tym szczęśliwcem i masz dostęp do najnowszych subskrypcji Microsoft to masz dostęp do nowych funkcji Excela. W tej subskrypcji funkcja INDEKS zwróci nam więcej wartości poprzez rozlanie. Zapis formuły powinien wyglądać następująco:

=INDEKS(A9:A15;{2;4})

Funkcja zwróci nam dwie wartości ale nie w jednej komórce, wynik zostanie rozlany na komórkę poniżej jak pokazano na rys. nr 5.

Rys. nr 5 – rozlanie wyników funkcji INDEKS
Rys. nr 5 – rozlanie wyników funkcji INDEKS

Excela klasyczny (zanim zostaną wprowadzone udoskonalenia) nie radzi sobie z tą funkcjonalnością. Funkcja INDEKS nie zwraca wartości liczbowych tylko range (zakres komórek) i pewnie z tego powodu ma problem, ponieważ my dajemy jej tablicę danych jako numery wierszy a nie jako zakres. Musimy „oszukać” funkcję INDEKS i tak przedstawić te wartości aby funkcja mogła je odczytać, czyli musimy zmusić funkcję INDEKS aby zwróciła ciąg wartości. W tym celu musimy użyć dwóch dodatkowych funkcji – JEŻELI i N. Dla funkcji JEŻELI jako pierwszy argument funkcji (test_logiczny) wpiszemy wartość 1, czyli sprawimy że test logiczny zawsze będzie zwracał wartość logiczną PRAWDA. Drugi argument funkcji – wartość_jeżeli_prawda to będą wartości, które chcemy zwrócić, czyli numery wierszy {1;3;5}.

Zapis funkcji powinien wyglądać następująco:

=INDEKS(A9:A15;JEŻELI(1;{1;3;5}))

Jeżeli podejrzymy wyniki tej formuły nadal otrzymamy zwróconą tylko jedną wartość, wiec musimy dołożyć funkcję N. Funkcja N konwertuje wartości nieliczbowe na liczby, daty oraz liczby kolejne. Upraszczając funkcja ta zamieni nam liczby na liczby, ale wykonując przy tym coś, co sprawi, że funkcja INDEKS zwróci nam wiele wartości. Zapis formuły powinien wyglądać następująco:

=INDEKS(A9:A15;N(JEŻELI(1;{1;3;5})))

Kiedy w trybie edycji komórki podejrzymy wyniki powyższej formuły za pomocą klawisza F9, otrzymamy trzy wyniki przedstawione na rys. nr 6.

Rys. nr 6 – Wyniki zwrócone przez funkcje INDEKS (z użyciem funkcji JEŻELI i N)
Rys. nr 6 – Wyniki zwrócone przez funkcje INDEKS (z użyciem funkcji JEŻELI i N)

Podsumowując zmusiliśmy funkcję INDEKS, aby zwróciła nam kilka wartości nie po kolei (wybrane wartości, a nie cały wiersz czy kolumnę). Teraz możemy użyć funkcji SUMA, która zsumuje nam te zwrócone wartości. Zapis formuły powinien wyglądać następująco:

=SUMA(INDEKS(A9:A15;N(JEŻELI(1;{1;3;5}))))

Otrzymamy wynik przedstawiony na rys. nr 7.

Rys. nr 7 – Suma trzech wartości otrzymanych z funkcji INDEKS
Rys. nr 7 – Suma trzech wartości otrzymanych z funkcji INDEKS

Wyjaśniliśmy działanie funkcji INDEKS z użyciem dodatkowych funkcji JEŻELI i N na prostym przykładzie. Teraz przejdziemy do wykorzystania takich obliczeń na bardziej praktycznym przykładzie. Chcemy w tym przykładzie żeby funkcja INDEKS zwróciła nam kilka wartości, abyśmy potem mogli je zsumować i wyznaczyć zwycięzcę. Zadanie to omówimy na podstawie przykładowych danych z rys. nr 8.

Rys. nr 8 – przykładowe dane
Rys. nr 8 – przykładowe dane

W danych tych mamy 4 wyścigi i 5 zawodników, którzy w każdym wyścigu zajęli jakieś miejsca. W zależności od zajętego miejsca jest przyznawana różna punktacja. Naszym zadaniem jest zsumowanie punktów wszystkich uczestników wyścigów, aby wiedzieć kto zdobył najwięcej punktów a kto najmniej. Naszym rdzeniem (podstawą obliczeń) będzie funkcja PODAJ.POZYCJĘ. Pierwszym argumentem funkcji jest szukana_wartość, czyli miejsca zajęte przez danego zawodnika. Drugi argument to przeszukiwana_tab, czyli tablica z numerami miejsc (J2:J6). Zakres ten blokujemy bezwzględnie za pomocą klawisza F4. Trzeci opcjonalny argument to typ_dopasowania, czyli w naszym przykładzie wartość 0 dla dopasowania dokładnego. Zapis funkcji powinien wyglądać następująco:

=PODAJ.POZYCJĘ(G10:J10;$J$2:$J$6;0)

Kiedy podejrzymy wyniki tej funkcji dla pierwszego zawodnika w trybie edycji komórki za pomocą klawisza F9 otrzymamy 4 wyniki przedstawione na rys. nr 9.

Rys. nr 9 – Wyniki zwracane przez funkcję PODAJ.POZYCJĘ
Rys. nr 9 – Wyniki zwracane przez funkcję PODAJ.POZYCJĘ

Mamy numery miejsc, ale my chcemy wyciągnąć wartości dopasowane do tych numerów miejsc, czyli liczbę punktów przyznawanych za zdobycie danego miejsca. Użyjemy tutaj funkcji INDEKS. Pierwszy argument funkcji, czyli tablica, to będzie zakres z punktacją za poszczególne miejsca w wyścigu, który musimy zablokować bezwzględnie za pomocą klawisza F4. Drugi argument, czyli nr_wiersza, to wartości zwracane przez funkcję PODAJ.POZYCJĘ. Zapis funkcji będzie wyglądał następująco:

=INDEKS($K$2:$K$6;PODAJ.POZYCJĘ(G10:J10;$J$2:$J$6;0))

Jeśli podejrzymy wyniki tej funkcji za pomocą klawisza F9 otrzymamy błąd #ARG! (rys. nr 10). Funkcja INDEKS sobie nie radzi i zwraca nam błąd.

Rys. nr 10 – błąd zwrócony przez funkcję INDEKS
Rys. nr 10 – błąd zwrócony przez funkcję INDEKS

Musimy dołożyć kombinację funkcji JEŻELI i funkcji N taj ka w poprzednim przykładzie. Dokładamy funkcję JEŻELI z testem logicznym 1, który zwraca zawsze wartość logiczną PRAWDA, czyli wartości zwrócone przez funkcję PODAJ.POZYCJĘ. Musimy pamiętać o dołożeniu funkcji N. Zapis funkcji powinien wyglądać następująco:

=INDEKS($K$2:$K$6;N(JEŻELI(1;PODAJ.POZYCJĘ(G10:J10;$J$2:$J$6;0))))

Teraz jeśli podejrzymy wyniki formuły za pomocą klawisza F9 otrzymamy punktację za każdy wyścig, formuła zwróci nam 4 wartości przedstawione na rys. nr 11.

Rys. nr 11 – punktacja za poszczególne wyścigi
Rys. nr 11 – punktacja za poszczególne wyścigi

Na tym etapie możemy te obliczenia wstawić do funkcji SUMA i uzyskać całkowitą liczbę punktów zdobytą na zawodach przez poszczególnych zawodników. Zapis formuły powinien wyglądać następująco:

=SUMA(INDEKS($K$2:$K$6;N(JEŻELI(1;PODAJ.POZYCJĘ(G10:J10;$J$2:$J$6;0)))))

Musimy pamiętać aby podaną formułę zatwierdzić skrótem klawiszowym Ctrl+Shift+Enter, ponieważ jest to formuła tablicowa. Otrzymany wynik przeciągamy na wiersze poniżej i otrzymamy wyniki punktacji z całych zawodów przedstawione na rys. nr 12.

Rys. nr 12 – zsumowana punktacja poszczególnych zawodników
Rys. nr 12 – zsumowana punktacja poszczególnych zawodników

Z wyników tych widać kto jest zwycięzcą całych zawodów. Podsumowując w klasycznym Excelu musimy się namęczyć i napisać dość skomplikowane formuły aby uzyskać wymagany wynik, czyli w zasadzie wymusić aby funkcja INDEKS zwróciła kilka wyników. Od momentu wprowadzenia udoskonaleń formuły takie będą o wiele mniej skomplikowane, ponieważ wszystkie funkcje będą sobie radzić z formułami tablicowymi.


Książka Mistrz Excela + promo na 35 urodziny

Chcę Cię poinformować, że w końcu udało mi zebrać środki i dopiąć wszystkich formalności, żeby powstało II wydanie mojej książki Mistrz Excela (zostałem wydawcą)
II wydanie jest wzbogacone o rozdział (nr 22) wprowadzający w genialny dodatek (Power Query) do Excela służący do pobierania, łączenia i wstępnej obróbki danych z wielu źródeł.

Książka Mistrz Excela to historia Roberta, który musi poznać dobrze Excela na potrzeby nowej pracy. Książka jest napisana w formie rozmów Roberta z trenerem, dzięki temu jest przystępniejsza w odbiorze niż standardowe książki techniczne pisane językiem "wykładowym".

Rozmowy zostały podzielone na 22 tematyczne rozdziały, które krok po kroku wprowadzają Cię w tajniki Excela. Robert zaczyna naukę od poznania ciekawych aspektów sortowania i filtrowania danych w Excelu, przechodzi przez formatowanie warunkowe, tabele przestawne, funkcje wyszukujące i wiele innych tematów, by na koniec poznać wstępne informacje o VBA i Power Query.
A wszystko to na praktycznych przykładach i z dużą ilością zdjęć.

Żebyś mógł śledzić postępy Roberta, do książki dołączone są pliki Excela, na których pracuje Robert.

Aktualnie w promocji urodzinowej możesz mieć Mistrza Excela w obniżonej cenie, jeśli tylko wpiszesz kod 35URODZINY
https://exceliadam.pl/produkt/ksiazka-mistrz-excela

Na powyższej stronie znajdziesz dokładniejszy opis książki, opinie osób, które kupiły I wydanie oraz podgląd pierwszego rozdziału książki, żeby upewnić się, czy forma rozmów przy nauce Excela jest dla Ciebie.
Jeśli książka Ci się spodoba poinformuj o niej swoich znajomych.

W ramach promocji na moje 35 urodziny możesz też mieć każdy z moich kursów wideo na Udemy za zaledwie 35 zł. Linki do kursów zamieszczam poniżej. W każdym kursie są udostępnione filmy do podglądu, byś mógł się przekonać czy dany kurs jest dla Ciebie.

Power Query
https://www.udemy.com/course/mistrz-power-query/?couponCode=35URODZINY

Mistrz Excela
https://www.udemy.com/mistrz-excela/?couponCode=35URODZINY

Dashboardy
https://www.udemy.com/course/excel-dashboardy/?couponCode=35URODZINY

Mistrz Formuł
https://www.udemy.com/course/excel-mistrz-formul/?couponCode=35URODZINY

VBA
https://www.udemy.com/course/excel-vba-makra/?couponCode=35URODZINY

Microsoft Power BI
https://www.udemy.com/course/power-bi-microsoft/?couponCode=35URODZINY

Książka Mistrz Excela reklama