Excel — Czy tekst zawiera cyfry — porada #378

W dzisiejszym poście nauczymy się sprawdzać dane tekstowe pod kątem tego, czy zawierają cyfry. Chodzi o to, by sprawdzić czy dany tekst (kod) zawiera cyfry. Jeśli tekst rzeczywiście zawiera cyfry, może to oznaczać, że był wydawany po określonej dacie albo dotyczy to konkretnego działu lub usługi. Zadanie to wykonamy na podstawie przykładowych danych z rys. nr 1.

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

W tym celu możemy użyć funkcji ZNAJDŹ, która pozwala wyszukać jeden tekst w innym lub funkcji SZUKAJ.TEKST, która działa na takiej samej zasadzie. Różnica między funkcjami polega na tym, że funkcja SZUKAJ.TEKST nie rozróżnia wielkości liter.

W naszym przykładzie wykorzystamy funkcję ZNAJDŹ, która ma krótszy zapis. Pierwszym argumentem funkcji jest szukany_tekst, czyli jakaś cyfra. Drugi argument funkcji to w_tekście, czyli komórka w jakiej chcemy znaleźć tą cyfrę (u nas komórka A2). Zapis funkcji powinien wyglądać następująco:

=ZNAJDŹ(1;A2)

Powyższą formułę zatwierdzamy i otrzymamy wynik przedstawiony na rys. nr 2.

Rys. nr 2 – wynik funkcji ZNAJDŹ
Rys. nr 2 – wynik funkcji ZNAJDŹ

Funkcja ZNAJDŹ zwróci nam numer pozycji szukaj cyfry, oczywiście pod warunkiem, że szukana cyfra pojawia się w przeszukiwanym tekście. Nas nie interesuje pojedyncza cyfra, tylko wiele cyfr. Ponadto jeśli funkcja ZNAJDŹ nie znajdzie szukanej cyfry to zwróci nam błąd argumentu — #ARG! (rys. nr 3).

Rys. nr 3 – błąd zwrócony przez funkcję ZNAJDŹ w sytuacji kiedy nie ma w tekście szukanej cyfry
Rys. nr 3 – błąd zwrócony przez funkcję ZNAJDŹ w sytuacji kiedy nie ma w tekście szukanej cyfry

Tak jak wspominaliśmy nie szukamy jednej cyfry, ale szukamy dowolnej cyfry, więc musimy stworzyć tablicę wszystkich możliwych cyfr i zapisać ją jako pierwszy argument funkcji. Ułatwieniem jest to że w funkcji wpisujemy konkretne cyfry a nie tekst. Zapis funkcji z tablicą powinien wyglądać następująco:

=ZNAJDŹ({0,1,2,3,4,5,6,7,8,9;A2)

Kolejność cyfr w zapisie nie ma znaczenia. Jeśli przy takim zapisie podejrzymy sobie wyniki funkcji w trybie edycji komórki za pomocą klawisza F9 otrzymamy tablicę wyników przedstawioną na rys. nr 4.

Rys. nr 4 – podgląd wyników funkcji ZNAJDŹ
Rys. nr 4 – podgląd wyników funkcji ZNAJDŹ

Funkcja ZNAJDŹ zwróci nam błędy w przypadku, kiedy danej cyfry nie znajdzie oraz pozycję (numer miejsca w tekście), kiedy dana cyfra wystąpi w tekście. Z podglądu wyników formuły wychodzimy za pomocą skrótu klawiszowego Ctrl+Z. Dla nas istotne jest tylko, czy cyfry zostały znalezione, a nie potrzebujemy pozycji danej cyfry.

Skorzystamy tutaj z funkcji CZY.LICZBA, która zwróci nam wartości logiczne PRAWDA i FAŁSZ. Zapis funkcji powinien wyglądać następująco:

=CZY.LICZBA(ZNAJDŹ({0,1,2,3,4,5,6,7,8,9;A2))

Kiedy podejrzymy sobie wyniki formuły w trybie edycji komórki za pomocą klawisza F9 otrzymamy tablicę wartości logicznych przedstawioną na rys. nr 5, gdzie w sytuacji kiedy cyfra zostanie znaleziona funkcja zwróci nam wartość logiczną PRAWDA, natomiast w odwrotnej sytuacji otrzymamy wartość logiczną FAŁSZ.

Rys. nr 5 – Wartości logiczne zwrócone przez funkcję CZY.LICZBA
Rys. nr 5 – Wartości logiczne zwrócone przez funkcję CZY.LICZBA

Z podglądu wyników formuły wychodzimy za pomocą skrótu klawiszowego Ctrl+Z. Wartości logiczne może być ciężko zliczyć, więc za pomocą podwójnej negacji zamieniamy tablicę wartości logicznych na tablicę wartości 0 i 1. Zapis funkcji powinien wyglądać następująco:

=–CZY.LICZBA(ZNAJDŹ({0,1,2,3,4,5,6,7,8,9;A2))

Kiedy podejrzymy sobie wyniki formuły w trybie edycji komórki za pomocą klawisza F9 otrzymamy tablicę wartości 0 i 1 przedstawioną na rys. nr 6.

Rys. nr 6 – tablica wartości 0 i 1 po zastosowaniu podwójnej negacji
Rys. nr 6 – tablica wartości 0 i 1 po zastosowaniu podwójnej negacji

Wartości logiczne FAŁSZ zostają zamienione na wartość 0, natomiast wartości logiczne PRAWDA na wartość 1. Z podglądu wyników formuły wychodzimy za pomocą skrótu klawiszowego Ctrl+Z. Na tym etapie wystarczy zsumować te wartości, korzystając z funkcji SUMA.ILOCZYNÓW. Używamy tej funkcji, aby nie trzeba było pamiętać, aby zatwierdzać naszą formułę, jako tablicową (skrót klawiszowy Ctrl+Shift+Enter). Zapis funkcji powinien wyglądać następująco:

=SUMA.ILOCZYNÓW(–CZY.LICZBA(ZNAJDŹ({0,1,2,3,4,5,6,7,8,9;A2)))

Otrzymamy wynik przedstawiony na rys. nr 7, czyli otrzymamy ilość znalezionych cyfr w tekście.

Rys. nr 7 – wynik funkcji SUMA.ILOCZYNÓW (ilość znalezionych cyfr w tekście)
Rys. nr 7 – wynik funkcji SUMA.ILOCZYNÓW (ilość znalezionych cyfr w tekście)

Po skopiowaniu formuły na wiersze poniżej otrzymamy wyniki przedstawione na rys. nr 8.

Rys. nr 8 – wyniki funkcji SUMA.ILOCZYNÓW dla całej tabeli
Rys. nr 8 – wyniki funkcji SUMA.ILOCZYNÓW dla całej tabeli

Co łatwo zauważyć w wierszu 6 pojawia się nam błąd. Wynika on z tego, że funkcja ta zwraca tylko pierwsze wystąpienie danej cyfry, więc w wierszu nr 6 mamy tylko 2 różne cyfry (0 i 1), funkcja nie bierze pod uwagę powtarzającej się cyfry 0. Podsumowując funkcja sprawdza czy w tekście jest dany znak, a nie ile razy on występuje.

Na koniec musimy zrobić test logiczny, żeby sprawdzić czy wartość otrzymana z naszej formuły jest większa od 0. Zapis powinien wyglądać następująco:

=SUMA.ILOCZYNÓW(–CZY.LICZBA(ZNAJDŹ({0,1,2,3,4,5,6,7,8,9;A2)))>0

Dzięki użyciu testu logicznego otrzymamy wartość logiczną PRAWDA dla sytuacji kiedy cyfry występują w tekście lub wartość logiczną FALSZ, kiedy cyfry nie występują (rys. nr 9).

Rys. nr 9 – sprawdzenie czy tekst zawiera cyfrę
Rys. nr 9 – sprawdzenie czy tekst zawiera cyfrę

Naszym zadaniem było sprawdzenie czy dany tekst zawiera jakąś cyfrę. Nie jest istotne ile jest tych cyfr oraz jaką cyfrę zawiera tekst.


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

Excel — N‑ta wartość spełniająca warunki — FILTRUJ i INDEKS — porada #377

W dzisiejszym poście nauczymy się jak znaleźć n‑tą wartość spełniającą warunki (kryteria). Zadanie to wykonamy na podstawie przykładowych danych z rysunku nr 1.

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

W wyzwaniu nr 17 pokazywaliśmy jak rozwiązać taki problem klasycznym Excelem i wtedy w ogóle nie wykorzystywaliśmy funkcji związanych z wyszukiwaniem oprócz funkcji INDEKS. Funkcje jakie zostały tam wykorzystane zostały przedstawione na rys. nr 2.

Rys. nr 2 – wyszukiwanie wartości spełniającej 2 warunki w klasycznym Excelu
Rys. nr 2 – wyszukiwanie wartości spełniającej 2 warunki w klasycznym Excelu

Próbowałem rozwiązać taki problem za pomocą rozwiązania zaproponowanego na stronie www.chandoo.org, które opierało się na wykorzystaniu funkcji X.WYSZUKAJ, ale to rozwiązanie jest zbyt skomplikowane dla przeciętnego użytkownika Excela. Rozwiązanie zostało przedstawione na rys. nr 3.

Rys. nr 3 – rozwiązanie zadania za pomocą sposobu ze strony www.chandoo.org
Rys. nr 3 – rozwiązanie zadania za pomocą sposobu ze strony www.chandoo.org

Nasze zadanie wykonamy w Excelu tablicowym, wykorzystamy tutaj funkcje FILTRUJ i INDEKS. Użyjemy najpierw funkcji FILTRUJ, która w chwili nagrywania filmu (wrzesień 2019) była dostępna tylko w programie niejawnych testów Offica (Insider). Pierwszym argumentem funkcji FILTRUJ jest tablica, czyli cała tabela z danymi od komórki A3. Tabela zawiera dużo danych więc aby ją odpowiednio i szybko zaznaczyć, musimy ustawić aktywną komórkę w komórce A3 i za pomocą skrótu klawiszowego Ctrl+Shift+strzałka w bok zaznaczyć cały wiersz, a następnie za pomocą skrótu Ctrl+Shift+strzałka w dół zaznaczyć obszar do ostatniego wiersza. W celu powrotu do komórki, gdzie wpisujemy formułę musimy użyć skrótu klawiszowego Ctrl+Backspace. Drugi argument funkcji to uwzględnienie, czyli testy logiczne sprawdzające (inaczej filtry). W naszym teście chcemy sprawdzić czy w kolumnie Województwo znajduje się to wybrane przez nas województwo (np. lódzkie). Podsumowując zaznaczamy cała kolumnę Województwo (bez nagłówka) i przyrównujemy ją do wartości, którą chcemy sprawdzić, czyli B3:B300=F5. Zapis całej formuły powinien wyglądać następująco:

=FILTRUJ(A3:D300;B3:B300=F5)

Kiedy podejrzymy sobie wynik formuły w trybie edycji komórki za pomocą klawisza F9, otrzymamy sporą tablicę wartości logicznych PRAWDA i FAŁSZ, której fragment został pokazany na rys. nr 4.

Rys. nr 4 – podgląd wyników funkcji FILTRUJ
Rys. nr 4 – podgląd wyników funkcji FILTRUJ

Z podglądu wyników formuły wychodzimy za pomocą skrótu klawiszowego Ctrl+Z. T wynikach wartości logiczne PRAWDA otrzymamy tylko dla sytuacji, kiedy w kolumnie Województwo pojawi się województwo łódzkie, natomiast wartości FAŁSZ będą wszędzie tam gdzie będzie każde inne województwo. Funkcja FILTRUJ zwróci nam tablicę danych dla każdego wystąpienia województwa łódzkiego przedstawioną na rys. nr 5.

Rys. nr 5 – tablica zwrócona przez funkcje FILTRUJ
Rys. nr 5 – tablica zwrócona przez funkcje FILTRUJ

W związku z tym, że nie mamy nałożonego odpowiedniego formatowania wyniki w pierwszej kolumnie nie przypominają dat. Wystarczy zaznaczyć kolumnę z datami i na karcie Narzędzia główne w kategorii Liczba wybrać z listy rozwijanej typ danych Data krótka jak na rys. nr 6.

Rys. nr 6 – szybkie formatowanie danych – typ Data krótka
Rys. nr 6 – szybkie formatowanie danych – typ Data krótka

Otrzymaliśmy dane spełniające jeden warunek (wybrane województwo), a nam zależy na otrzymaniu danych spełniających 2 warunki. Teraz w formule funkcji wystarczy dołożyć drugi filtr (drugie kryterium) dotyczący sprzedawcy. Ze względu na to, że operacje porównania są wykonywane w Excelu na końcu musimy zapisać je w nawiasach. Aby otrzymać drugie kryterium (oba kryteria mają być spełnione jednocześnie) musimy te dwa kryteria przemnożyć przez siebie. W drugim kryterium musimy porównać dane z kolumny Sprzedawca do określonego (wybranego przez nas) sprzedawcy, czyli zapis testu logicznego powinien wyglądać następująco: C3:C300=G5. Zapis całej formuły funkcji FILTRUJ powinien wyglądać następująco:

=FILTRUJ(A3:D300;(B3:B300=F5)*(C3:C300=G5))

Dzięki takiemu zapisowi otrzymaliśmy filtrowanie danych po 2 kryteriach przedstawione na rys. nr 7.

Rys. nr 7 – dane spełniające dwa kryteria
Rys. nr 7 – dane spełniające dwa kryteria

Otrzymaliśmy dane spełniające dwa kryteria, czyli każde wystąpienie województwa łódzkiego i sprzedawcy Kinga. Nasz nałożony filtr jest dynamiczny, mianowicie możemy zmienić sobie nazwę zarówno województwa jak i sprzedawcy rozwijając listy rozwijane w odpowiednich komórkach (rys. nr 8).

Rys. nr 8 – dynamiczny charakter nałożonego filtru
Rys. nr 8 – dynamiczny charakter nałożonego filtru

Podsumowując funkcja FILTRUJ zwraca nam tablicę danych. Naszym celem jest znalezienie n‑tej wartości spełniającej podane warunki. Załóżmy że chcemy wyciągnąć z danych 5‑ty wiersz (n=5). Możemy to zrobić za pomocą INDEKS, wystarczy, że do funkcji INDEKS włożymy tablicę którą otrzymaliśmy z funkcji FILTRUJ. Pierwszym argumentem funkcji INDEKS jest tablica, czyli tablica otrzymana za pomocą funkcji FILTRUJ. Drugi argument funkcji to nr_wiersza, czyli wartość parametru n (w naszym przykładzie wartość 5 zapisana w komórce F2). Zapis formuły powinien wyglądać następująco:

=INDEKS(FILTRUJ(A3:D300;(B3:B300=F5)*(C3:C300=G5));F2)

Po zatwierdzeniu formuły otrzymamy jeden wiersz (5‑ty wiersz) przedstawiony na rys. nr 9.

Rys. nr 9 – 5-ty wiersz zwrócony przez funkcję INDEKS
Rys. nr 9 – 5‑ty wiersz zwrócony przez funkcję INDEKS

Ze względu na to, że nas interesowała w tym przypadku tylko kwota a nie cały wiersz, możemy ograniczyć zakres tablicy w formule funkcji FILTRUJ. Wystarczy zmienić zakres danych A3:D300 na D3:D300. Zapis całej formuły powinien wyglądać następująco:

=INDEKS(FILTRUJ(D3:D300;(B3:B300=F5)*(C3:C300=G5));F2)

Po zatwierdzeniu formuły otrzymamy jeden konkretny wynik przedstawiony na rys. nr 10.

Rys. nr 10 – wynik funkcji INDEKS po zmianie zakresu w funkcji FILTRUJ
Rys. nr 10 – wynik funkcji INDEKS po zmianie zakresu w funkcji FILTRUJ

Jak łatwo zauważyć, wynik ma dziwną postać. Wystarczy zmienić formatowanie na walutowe, aby otrzymać prawidłowo pokazaną daną za pomocą skrótu klawiszowego Ctrl+Shift+4 (rys. nr 11).

Rys. nr 11 – zmiana formatowania na walutowe za pomocą skrótu klawiszowego
Rys. nr 11 – zmiana formatowania na walutowe za pomocą skrótu klawiszowego

Podsumowując w tym przykładzie nie korzystaliśmy z funkcji X.WYSZUKAJ jak w klasycznym Excelu, aby odnaleźć n‑tą wartość, dzięki temu nasza formuła jest prosta (o wiele mniej skomplikowana niż te przedstawione na rys. nr 2 i 3). Czasami praca w Excelu polega na obliczeniu jakichś wartości w najłatwiejszy sposób, nie zawsze trzeba na siłę używać skomplikowanych funkcji, które na pierwszy rzut oka wydają się oczywiste do rozwiązania danego zadania.


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

Excel — Jak policzyć ilość punktów zdobytych we wszystkich wyścigach — INDEKS — porada #376

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