0
0 Produkty w koszyku

No products in the cart.

Excel — Wyciąganie ilości centymetrów z nazwy produktu — widzowie #124

W tym poście nauczymy się, jak wyciągnąć długość przedmiotu w centymetrach z nazwy produktu w Excelu.

Temat ten omówimy na podstawie przykładowych danych z rys. nr 1.

Rys. nr 1 – przykładowe dane

Jak widać na rysunku powyżej mamy pełne nazwy produktów i wewnątrz nich znajduje się długość poszczególnych przedmiotów (50cm, 35cm itd.), czyli mamy podaną liczbę a za nią oznaczenie cm.

Od Excela 2013 możemy tą informację wyciągnąć za pomocą FlashFill, który działa niejako w tle. Wystarczy, że w pierwszym wierszu napiszemy 50, a w drugim 35. To już powinno wystarczyć, żeby wybrać polecenie Wypełnianie błyskawiczne z karty Dane (rys. nr 2). Ewentualnie możemy skorzystać ze skrótu klawiszowego Ctrl+E.

Rys. nr 2 – polecenie Wypełnianie błyskawiczne

Excel wyciągnie odpowiednie informacje i wypełni pozostałe wiersze, co widać na rys. nr 3.

Rys. nr 3 – działanie Wypełniania błyskawicznego

Jeśli nie masz jeszcze Excela 2013 z opcją FlashFill, to mamy dla Ciebie inne rozwiązanie. Trzeba użyć formuły. Skorzystamy tutaj z tego, że nasza długość ma maksymalnie 3 cyfry, ponieważ w takiej sytuacji łatwo jest wyciągnąć takie informacje. Możemy też zauważyć, że dane które chcemy wyciągnąć poprzedza spacja lub znak -. Pierwszym krokiem będzie odnalezienie tekstu "cm". Użyjemy do tego funkcji SZUKAJ.TEKST, która nie rozróżnia wielkości liter. Pierwszym argumentem funkcji jest szukany_tekst, czyli cm w podwójnych cudzysłowach. Drugi argument funkcji to obejmujący_tekst, czyli tekst, w którym chcemy znaleźć nasze znaki (A2). Zapis formuły powinien wyglądać następująco:

=SZUKAJ.TEKST("cm";A2)

Powyższą formułę zatwierdzamy i kopiujemy w dół. Otrzymamy dane przedstawione na rys. nr 4.

Rys. nr 4 – wyniki funkcji SZUKAJ.TEKST

Otrzymaliśmy liczby, czyli pierwszą pozycję szukanego przez nas tekstu "cm" w całym ciągu znaków. My jednak nie chcemy wyciągać informacji od tego znaku, a przed tym znakiem. Chcemy się cofnąć i wyciągnąć informacje poprzedzające dwuznak cm. Wystarczy, że od tej pozycji, na której się zaczyna ciąg cm odjąć wartość 3, bo nasza liczna ma maksymalnie 3 znaki. Zapis formuły powinien wyglądać następująco:

=SZUKAJ.TEKST("cm";A2)-3

Otrzymamy nowe pozycje o 3 znaki wcześniej przedstawione na rys. nr 5.

Rys. nr 5 – nowa pozycja o 3 znaki wcześniej

Dopiero od tych zmodyfikowanych pozycji chcemy zacząć wyciągać tekst. Użyjemy do tego funkcji FRAGMENT.TEKSTU. Pierwszym argumentem funkcji jest tekst, czyli tekst z którego chcemy wyg=ciągnąć jakiś fragment (A2). Drugi argument funkcji to liczba_początkowa, czyli pozycja od jakiej chcemy zacząć wyciągać informacje (wynik poprzedniej formuły). Trzeci opcjonalny argument to liczba_znaków, czyli ile znaków chcemy wyciągnąć (3). Zapis formuły powinien wyglądać następująco:

=FRAGMENT.TEKSTU(A2;SZUKAJ.TEKST("cm";A2)-3;3)

Powyższą formułę zatwierdzamy. Otrzymamy wyciągnięte dane dotyczące długości poszczególnych produktów przedstawione na rys. nr 6.

Rys. nr 6 – wyciągnięte dane dotyczące długości produktów

Jak łatwo zauważyć na rysunku powyżej, przez to że wyciągnęliśmy 3 znaki, otrzymaliśmy część danych poprzedzonych minusem lub spacją. Musimy te dodatkowe znaki usunąć. Wystarczy dołożyć jedną funkcję. Zanim jednak to zrobimy, musimy zwrócić uwagę, że nasze dane to według Excela tekst, a nie wartości liczbowe, bo są wyrównane do lewej strony. Wynika to z użycia funkcji FRAGMENT.TEKSTU, która jest funkcją tekstową i zwraca tekst. Musimy użyć tutaj funkcji matematycznej MODUŁ.LICZBY, która konwertuje tekst na liczbę, jak również usuwa znak minus i spację sprzed liczby. Zapis formuły powinien wyglądać następująco:

=MODUŁ.LICZBY(FRAGMENT.TEKSTU(A2;SZUKAJ.TEKST("cm";A2)-3;3))

Po zatwierdzeniu formuły otrzymamy dane przedstawione na rys. nr 7.

Rys. nr 7 – wyciągnięta długość produktów

Excel — Ile liter w tekście — porada 420

W tym poście nauczymy się zliczać wszystkie litery w tekście, czy też dowolne znaki.

Najwięcej problemu może być z literami, bo mamy litery małe i wielkie, poza tym w polskim języku mamy litery takie jak ą, ę, ś, ć, ń, ź, ż, ł, ó, czyli wszystkie te litery z ogonkami i kreseczkami. Najprostszą metodą na wykonanie tego zadania jest wypisanie wszystkich możliwych znaków w postaci wielkich liter. Temat ten omówimy na podstawie przykładowych danych z rys. nr 1.

Rys. nr 1 – przykładowe dane

W pierwszym kroku musimy nasz tekst rozbić na poszczególne znaki. Do tego celu potrzebujemy ciągu liczbowego od 1 do wartości odpowiadającej długości naszego tekstu. Najpierw użyjemy funkcji , która zwraca liczbę znaków w ciągu znaków. My jednak potrzebujemy zbudować ciąg wartości. Użyjemy tutaj właściwości funkcji WIERSZ, która polega na tym, że jeśli w argumencie odwołanie zaznaczymy zakres A1:A8, to funkcja zwróci tyle wartości, ile zaznaczyliśmy wierszy w tym zakresie. Przykładowy zapis formuły to =WIERSZ(A1:A8) (rys. nr 2)

Rys. nr 2 – właściwość funkcji WIERSZ

Zaznaczyliśmy w zakresie 8 wierszy, więc funkcja WIERSZ w Excelu tablicowym rozlewa się na te właśnie wiersze. Musimy dla tej funkcji zbudować odpowiedni zakres. Potrzebujemy do tego funkcji ADR.POŚR (adres pośredni). Możemy tutaj wykluczyć kolumny, interesują nas tylko wiersze. Argumentem funkcji jest adres_tekst, czyli zaczynami od "1:", od pierwszego wiersza, a dwukropek oznacza, że będziemy szli dalej do kolejnych wierszy. Ten tekst łączymy z funkcją dla tekstu z komórki A2. Zapis formuły powinien wyglądać następująco:

=ADR.POŚR("1:"&(A2))

Jeśli podejrzymy sobie wynik formuły funkcji ADR.POŚR za pomocą skrótu klawiszowego F9 otrzymamy ilość znaków 1:11, co widać na rys. nr 3.

Rys. nr 3 – podejrzany wynik formuły

Wychodzimy z podglądu formuły za pomocą skrótu klawiszowego Ctrl+Z. Powyższą funkcję musimy włożyć do funkcji WIERSZ, bo interesuje nas liczba wierszy z tego zakresu. Zapis formuły powinien wyglądać następująco:

=WIERSZ(ADR.POŚR("1:"&(A2)))

 Po zatwierdzeniu formuły otrzymamy dane przedstawione na rys. nr 4.

Rys. nr 4 – rozlane wyniki funkcji WIERSZ

W Excelu tablicowym wyniki rozlewają się automatycznie na odpowiednią ilość komórek (wierszy). W kolejnym kroku musimy dołożyć funkcję FRAGMENT.TEKSTU. Pierwszym argumentem funkcji jest tekst, czyli tekst z komórki A2. Drugi argument to liczba.początkowa, czyli tablica danych, którą zbudowaliśmy za pomocą funkcji WIERSZ (W Excelu tablicowym moglibyśmy użyć funkcji SEKWENCJA, która byłaby prostsza). Trzeci argument funkcji to liczba_znaków, czyli wartość 1, bo chcemy każdy znak wyciągnąć pojedynczo. Zapis formuły powinien wyglądać następująco:

=FRAGMENT.TEKSTU(A2; WIERSZ(ADR.POŚR("1:"&(A2)));1)

Wyniki funkcji zostały przedstawione na rys. nr 5.

Rys. nr 5 – wyniki funkcji FRAGMENT.TEKSTU

Otrzymaliśmy tablicę, w której każdy znak z tekstu został umieszczony w osobnym wierszu. Teraz będziemy chcieli sprawdzić, czy te znaki znajdują się w przygotowanym przez nas wzorze (rys. nr 6).

Rys. nr 6 – przygotowany wzór wszystkich występujących w języku polskim znaków

Standardowo powinniśmy użyć funkcji ZNAJDŹ, jednak nie możemy tego zrobić, bo ona uwzględnia wielkość liter. Więc musimy użyć drugiej funkcji wyszukującej, czyli SZUKAJ.TEKST, która nie zwraca uwagi na wielkość liter. Pierwszym argumentem funkcji jest szukany_tekst, czyli litery uzyskane z funkcji FRAGMENT.TEKSTU. Drugi argument funkcji to obejmujący_tekst, czyli odwołanie do komórki I2 zablokowane bezwzględnie, gdzie wypisaliśmy wszystkie możliwe znaki. Zapis formuły powinien wyglądać następująco;

=SZUKAJ.TEKST(FRAGMENT.TEKSTU(A2; WIERSZ(ADR.POŚR("1:"&(A2)));1);$I$2)

Po zatwierdzeniu formuły otrzymamy rozlane wartości, gdzie dana litera została znaleziona (rys. nr 7).

Rys. nr 7 – wyniki funkcji SZUKAJ.TEKST

Otrzymaliśmy liczbę 20, która odpowiada literce A, potem L ma przypisaną liczbę 28, ponownie A, czyli 20. Następnie pojawia się błąd argumentu  #ARG!, który wynika z tego, że w naszych wypisanych literach nie było spacji. Żeby pozbyć się tych błędów musimy użyć funkcji CZY.LICZBA, której argumentem jest wartość, czyli wyniki z naszej poprzedniej formuły. Zapis formuły powinien wyglądać następująco:

=CZY.LICZBA(SZUKAJ.TEKST(FRAGMENT.TEKSTU(A2; WIERSZ(ADR.POŚR("1:"&(A2)));1); $I$2))

Otrzymamy wyniki z wartościami logicznymi przedstawione na rys. nr 8.

Rys. nr 8 – wyniki funkcji CZY.LICZBA

Otrzymaliśmy wynik PRAWDA wszędzie tam, gdzie wcześniej mieliśmy liczbę, a wynik FAŁSZ, kiedy w danych był błąd argumentu. Pozostaje nam policzyć wszystkie wartości logiczne PRAWDA. Użyjemy do tego funkcji SUMA.ILOCZYNÓW, ale najpierw musimy zamienić wartości logiczne na liczby 1 i 0 (1‑PRAWDA, 0 — FAŁSZ). Możemy to zrobić za pomocą podwójnej negacji, czyli wpisujemy przed formułą dwa znaki minus. Zapis formuły powinien wyglądać następująco:

=–CZY.LICZBA(SZUKAJ.TEKST(FRAGMENT.TEKSTU(A2; WIERSZ(ADR.POŚR("1:"&(A2)));1); $I$2))

Po zatwierdzeniu formuły otrzymamy wyniki przedstawione na rys. nr 9.

Rys. nr 9 – wartości logiczne zamienione na liczbowe

Teraz wkładamy naszą formułę do funkcji SUMA.ILOCZYNÓW. Zapis formuły powinien wyglądać następująco:

=SUMA.ILOCZYNÓW(–CZY.LICZBA(SZUKAJ.TEKST(FRAGMENT.TEKSTU(A2; WIERSZ(ADR.POŚR("1:"&(A2)));1); $I$2)))

Po zatwierdzeniu formuły i skopiowaniu na wiersze poniżej otrzymamy ilość znaków w każdym wierszu, co widać na rys. nr 10.

Rys. nr 10 – ilość liter w każdym wierszu

Jeśli w formule nie chcemy mieć odwołania do komórki I2, to możemy wstawić tekst do naszej formuły w podwójnym cudzysłowie. Taka formuła też będzie działać prawidłowo. Zapis formuły powinien wtedy wyglądać następująco:

=SUMA.ILOCZYNÓW(–CZY.LICZBA(SZUKAJ.TEKST(FRAGMENT.TEKSTU(A2; WIERSZ(ADR.POŚR("1:"&(A2)));1);"ĄĘÓŚŁŻŹĆŃQWERTYUIOPASDFGHJKLZXCVBNM")))

Jeśli chcielibyśmy, aby takie znaki jak pojedynczy cudzysłów, czy kropka, przecinek itp. Też się zliczały, wystarczy, że dopiszemy je do naszego ciągu znaków z komórki I2.

Podsumowując, dzięki temu, że korzystamy tutaj z funkcji SZUKAJ.TEKST wystarczy jeden raz wypisać wszystkie litery. Nie ma znaczenia, czy są to wielkie, czy małe litery.

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

Jak wyciągnąć liczbę z początku lub końca tekstu — porada #294

Chcemy wyciągnąć liczbę z początku lub końca tekstu. Najpierw zajmiemy się pisaniem formuły do wyciągnięcia liczby z końca tekstu.

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 01

Jednym ze sposobów jest zaczęcie od znalezienie pozycji kolejnych cyfr. Możemy wykorzystać funkcję SZUKAJ.TEKST lub ZNAJDŹ. Obie znajdują pozycję szukanego tekstu (w naszym przykładzie liczby) w przeszukiwanym tekście, ale funkcja SZUKAJ.TEKST nie zwraca uwagi na wielkość liter, a funkcja ZNAJDŹ zwraca uwagę na wielkość liter. Ponieważ szukamy cyfr skorzystamy z funkcji, która ma krótszą nazwę.

Dalej ważne jest, że chcemy znaleźć pierwszą pozycję każdej cyfry. Żeby to zrobić musimy wpisać wszystkie cyfry w nawiasach klamrowych oddzielone slashami

{0\1\2\3\4\5\6\7\8\9}

Można sobie ułatwić życie i stworzyć serię cyfr w wierszu, odwołać się do niej, a następnie zaznaczyć całe odwołanie do tej serii i nacisnąć klawisz F9 – wtedy Excel zamiast odwołania wstawi potrzebną tablicę.

To, że zamiast odwołania do komórek skorzystamy z tablicy wpisanej na stałe (hardkodowej) pozwoli nam zatwierdzać formułę zwyczajnie, a nie jako formułę tablicową (za pomocą kombinacji klawiszy Ctrl + Shift + Enter).

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

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 02

Jednak przy wyszukiwaniu poszczególnych cyfr pojawią się błędy, gdy danej cyfry nie ma w przeszukiwanym tekście.

{10\#ARG!\#ARG!\#ARG!\#ARG!\11\#ARG!\#ARG!\#ARG!\#ARG!}

Obsługa błędów może być kłopotliwa, dlatego skorzystamy ze sztuczki, która ułatwi nam zadanie – do oryginalnego tekstu dołożymy na koniec ciąg wszystkich cyfr.

=ZNAJDŹ({0\1\2\3\4\5\6\7\8\9}; A2&"0123456789")

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 03

Dzięki temu zawsze znajdziemy każdą cyfrę, co najwyżej poza długością przeszukiwanego tekstu.

={10\13\14\15\16\11\18\19\20\21}

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 04

Ponieważ nas interesuje pierwsze wystąpienie jakiejkolwiek cyfry dlatego naszą dotychczasową formułę wstawimy do funkcji MIN.

=MIN(ZNAJDŹ({0\1\2\3\4\5\6\7\8\9}; A2&"0123456789"))

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 05

Teraz żeby odnaleźć ile znaków chcemy wyciągnąć z prawej strony tekstu (funkcja PRAWY) wystarczy znalezioną pozycję pierwszej cyfry odjąć od długości całego tekstu i dodać korygującą jedynkę.

=PRAWY(A2;(A2)-MIN(ZNAJDŹ({0\1\2\3\4\5\6\7\8\9}; A2&"0123456789"))+1)

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 06

Jak wyciągnęliśmy liczbę z końca tekstu to możemy teraz w łatwy sposób wyciągnąć sam tekst odejmując od długości całego tekstu długość liczby.

=LEWY(A2;(A2)-DŁ(C2))

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 07

Teraz zajmiemy się przypadkiem, gdy nasza liczba jest na początku tekstu. Musimy podejść do tego inaczej. Zaczniemy od tego, że usuniemy z tekstu po kolei każdą cyfrę za pomocą funkcji PODSTAW i pustego ciągu znaków:

=PODSTAW(I2;{0\1\2\3\4\5\6\7\8\9};"")

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 08

Uzyskamy wtedy dziesięć tekstów, w których nie będą się znajdować poszczególne cyfry, czyli w większości będzie to cały tekst, bo danej cyfry już na początku nie będzie w tekście.

={"5 Czekoladki"\"05 Czekoladki"\"05 Czekoladki"\"05 Czekoladki"\"05 Czekoladki"\"0 Czekoladki"\"05 Czekoladki"\"05 Czekoladki"\"05 Czekoladki"\"05 Czekoladki"}

Tylko, że nam nie są potrzebne same teksty, tylko ich długość, czyli naszą formułę wstawiamy do funkcji . Znowu ponieważ wpisaliśmy na stałe tablicę cyfr (hardkodowanie) nie musimy zatwierdzać naszej formuły jako formuły tablicowej.

=(PODSTAW(I2;{0\1\2\3\4\5\6\7\8\9};""))

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 09

Dzięki temu uzyskamy długość tekstu po usunięciu każdej kolejnej cyfry.

={12\13\13\13\13\12\13\13\13\13}

Czasami widać różnicę, do oryginalnej długości tekstu i właśnie tej różnicy szukamy. Wystarczy, że od długości oryginalnego tekstu odejmiemy te poszczególne długości.

=(I2)-DŁ(PODSTAW(I2;{0\1\2\3\4\5\6\7\8\9};""))

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 10

Wynikiem będzie tablica różnic

={1\0\0\0\0\1\0\0\0\0}

Zostaje nam ją tylko zsumować i mamy długość całej liczby, która znajduje się na początku tekstu.

=SUMA((I2)-DŁ(PODSTAW(I2;{0\1\2\3\4\5\6\7\8\9};"")))

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 11

Teraz wystarczy, że tą sumę wstawimy do funkcji LEWY i udało nam się wyciągnąć szukaną liczbę na początku tekstu.

=LEWY(I2;SUMA((I2)-DŁ(PODSTAW(I2;{0\1\2\3\4\5\6\7\8\9};""))))

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 12

Jak już wyciągnęliśmy liczbę, to z łatwością wyciągnąć możemy tekst, ewentualnie usuwając zbędne spacje:

=USUŃ.ZBĘDNE.ODSTĘPY(PRAWY(I2;(I2)-DŁ(J2)))

Porada 294 - Jak wyciągnąć liczbę z początka lub końca tekstu 13

Pozdrawiam
Adam Kopeć
Miłośnik Excela
Microsoft MVP

Jak znaleźć minimalną cenę dla produktu po jego ID, który jest w opisie funkcja AGREGUJ — widzowie #110

Dziś mamy trudne zadanie ponieważ musimy znaleźć minimalną cenę produktu, na podstawie jego ID, który znajduje się w opisie i może pojawić się w różnych miejscach tego opisu i w wielu komórkach. Będziemy działać na prostej bazie przykładowej.

Widzowie 110 - Jak znaleźć minimalną cenę dla produktu po jego ID w części opisu funkcja AGREGUJ 01

Przede wszystkim musimy znaleźć komórki, które zawierają w opisie szukane ID. Możemy się do tego posłużyć funkcją ZNAJDŹ lub SZUKAJ.TEKST, w zależności czy ma dla znaczenie, czy rozróżniamy małe i wielkie litery – funkcja ZNAJDŹ je rozróżnia, funkcja SZUKAJ.TEKST nie. W naszym przykładzie posłużymy się funkcją ZNAJDŹ, ponieważ w ID i opisach litery zawsze są albo wielkie, albo małe. Poza tym ta funkcja jest trochę krótsza w zapisie.

Czyli za pomocą funkcji ZNAJDŹ szukamy konkretnego ID w opisach produktów.

=ZNAJDŹ(D2;$A$2:$A$20) -> {#ARG!;1;#ARG!;#ARG!;#ARG!;18;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!;#ARG!}

Widzowie 110 - Jak znaleźć minimalną cenę dla produktu po jego ID w części opisu funkcja AGREGUJ 02

Jeśli funkcja ZNAJDŹ odnajdzie ID w komórce w opisie, to zwróci pozycję początkowego znaku, czyli jeśli ID jest na samym początku opisu to będzie liczba 1, bo już pierwszy znak należy do szukanego ID, jeśli ID będzie dalej w opisie to funkcja ZNAJDŹ zwróci odpowiednią inną liczbę.

Dla nas istotne jest, że jeśli ID został znaleziony mamy zwracaną liczbę, jeśli nie to błąd argumentu (#ARG!). Do dalszego kroku potrzebujemy wartości PRAWDA lub FAŁSZ, możemy je uzyskać wstawiając funkcję ZNAJDŹ do funkcji CZY.LICZBA.

=CZY.LICZBA(ZNAJDŹ(D2;$A$2:$A$20)) -> {FAŁSZ;PRAWDA;FAŁSZ;FAŁSZ;FAŁSZ;PRAWDA;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ;FAŁSZ}

Widzowie 110 - Jak znaleźć minimalną cenę dla produktu po jego ID w części opisu funkcja AGREGUJ 03

Wiemy gdzie występuje nasz szukany ID, ale nie wiemy jakie są dla niego wartości. Musimy też zignorować wartości FAŁSZ. Będziemy chcieli skorzystać z funkcji AGREGUJ, więc wykorzystamy sztuczkę z podzieleniem cen przez powyższą tablicę prawd i fałszów. Wynikiem będą ceny dla wartości PRAWDA i błędy dzielenia przez zero () dla wartości FAŁSZ, ponieważ przy dowolnej operacji matematycznej Excel zamienia wartości PRAWDA na 1, a FAŁSZ na 0.

=$B$2:$B$20/CZY.LICZBA(ZNAJDŹ(D2;$A$2:$A$20)) -> {#DZIEL/0!;80;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;75;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!;#DZIEL/0!}

Widzowie 110 - Jak znaleźć minimalną cenę dla produktu po jego ID w części opisu funkcja AGREGUJ 04

Tą tablicę możemy już wstawić do funkcji AGREGUJ z odpowiednimi parametrami. Ponieważ chcemy znaleźć minimalną wartość i pracujemy na tablicach jako pierwszy argument wpisujemy wartość 15, czyli będziemy korzystać z funkcji MIN.K (funkcja MIN w funkcji AGREGUJ nie radzi sobie z operacjami tablicowymi). Drugi argument ustawiamy na wartość 6, ponieważ chcemy zignorować wszystkie błędy. Trzeci argument to tablica, a czwarty to parametr k funkcji MIN.K, czyli numer minimalnej wartości, my chcemy uzyskać najmniejszą wartość, więc wpisujemy tu 1. Cała nasza formuła będzie wyglądać tak:

=AGREGUJ(15;6;$B$2:$B$20/CZY.LICZBA(ZNAJDŹ(D2;$A$2:$A$20));1)

Widzowie 110 - Jak znaleźć minimalną cenę dla produktu po jego ID w części opisu funkcja AGREGUJ 05

Jeśli masz wersję Excela wcześniejszą niż 2010, to nie będziesz miał jeszcze dostępu do funkcji AGREGUJ. W takiej sytuacji musisz skorzystać z formuły, którą musisz zatwierdzać jako formułę tablicową, czyli kombinacją klawiszy Ctrl + Shift + Enter

=MIN.K(JEŻELI(CZY.LICZBA(ZNAJDŹ(D2;$A$2:$A$20));$B$2:$B$20);1)

Widzowie 110 - Jak znaleźć minimalną cenę dla produktu po jego ID w części opisu funkcja AGREGUJ 06

Jedną z zalet rozwiązania z funkcją AGREGUJ jest to, że możesz zatwierdzić formułę zwyczajnie, a funkcja AGREGUJ sama poradzi sobie z operacjami na tablicach.