0
0 Produkty w koszyku

No products in the cart.

Excel — Podsumowanie sprzedaży po dniu tygodnia na podstawie daty — porada 423

W tym poście omówimy podsumowanie sprzedaży według dni tygodnia.

Zadanie to wykonamy na podstawie przykładowych danych z rys. nr 1.

Rys. nr 1 – przykładowe dane

Mamy niezbędne dla nas dane, czyli datę i wartość sprzedaży. Na tej podstawie chcemy uzyskać podsumowanie, ile transakcji odbyło się w każdym dniu tygodnia i jaka to była wartość sprzedaży. Na konkretny dzień tygodnia możemy patrzeć po jego nazwie lub po numerze (rys. nr 2).

Rys. nr 2 – podsumowanie, jakie chcemy uzyskać

Możemy tutaj użyć funkcji DZIEŃ.TYG, która na podstawie daty podaje dzień tygodnia. Pierwszym argumentem funkcji jest liczba_kolejna, czyli data, z której chcemy wyciągnąć dzień tygodnia. Drugi argument funkcji to [zwracany_typ], gdzie musimy zwrócić uwagę, jak są numerowane dni tygodnia. Standardowa numeracja jest tutaj określana liczbą 2, co widać na rys. nr 3.

Rys. nr 3 – typy numeracji dni tygodnia dla funkcji DZIEŃ.TYG

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

=DZIEŃ.TYG(A2;2)

Powyższą formułę zatwierdzamy i kopiujemy na komórki poniżej. Otrzymamy numery dni tygodnia dla poszczególnych dat przedstawione na rys. nr 4.

Rys. nr 4 – numery dni tygodnia dla poszczególnych dat

Jeśli będziemy mieli numerację dni tygodnia, to możemy wykorzystać dane z kolumny G. Możemy również wykorzystać funkcję TEKST i odpowiednio sformatować datę. Pierwszym argumentem funkcji TEKST jest wartość, czyli nasza data. Drugi argument to format_tekst, czyli oznaczenie formatu "dddd", które powoduje wyświetlanie pełnej nazwy tekstowej dnia tygodnia. Zapis formuły powinien wyglądać następująco:

=TEKST(A2;"dddd")

Powyższą formułę zatwierdzamy i kopiujemy na komórki poniżej. Podsumowując, jeśli datę z kolumny A, sformatujemy jako "dddd", to otrzymamy pełną nazwę dnia tygodnia (rys. nr 5).

Rys. nr 5 – pełna nazwa dnia tygodnia dzięki funkcji TEKST

Jak widać w danych powyżej wartości z kolumn C i D ze sobą korespondują, tzn. jeśli mamy np. wartość 3 w kolumnie C, to w kolumnie D mamy dzień o nazwie Środa itd.

Jeśli możemy sobie pozwolić na zbudowanie w danych dodatkowych kolumn (pomocniczych), to możemy użyć funkcji SUMA.WARUNKÓW lub  SUMA.JEŻELI. My jednak założymy, że nie mamy możliwości zbudowania takich kolumn pomocniczych, dlatego takie obliczenia musimy wykonać wewnątrz jednej formuły. A funkcja SUMA.WARUNKÓW nie pozwala na obliczenia w jej wnętrzu.

W pierwszej kolejności musimy sprawdzić dzień tygodnia, ale dla całej kolumny A. Użyjemy do tego funkcji DZIEŃ.TYG. Zaznaczamy komórkę A2 i za pomocą skrótu klawiszowego Ctrl+Shift+Strzałka w dół zaznaczamy całą kolumnę. Podany zakres blokujemy bezwzględnie za pomocą klawisza F4. W argumencie zwracany_typ wybieramy wartość 2 (dla numeracji poniedziałek — 1, niedziela – 7). Zapis formuły powinien wyglądać następująco:

=DZIEŃ.TYG($A$2:$A$1998;2)

Ze względu na to, że pracujemy na Excelu tablicowym, po zatwierdzeniu formuły, wyniki rozleją się na odpowiednią ilość komórek (rys. nr 6).

Rys. nr 6 – rozlana formuła funkcji DZIEŃ.TYG

Interesuje nas, kiedy wartości z kolumny H są równe wartością z kolumny G. Zapis formuły powinien wyglądać następująco:

=DZIEŃ.TYG($A$2:$A$1998;2)=G2

Po zatwierdzeniu formuły otrzymamy wartości logiczne PRAWDA i FAŁSZ przedstawione na rys. nr 7.

Rys. nr 7 – wartości logiczne PRAWDAFAŁSZ

Nie ma znaczenia, jeśli nie posiadasz Excela tablicowego, to tylko ułatwia pokazywania rozlewających się formuł. Teraz musimy zamienić nasze wartości logiczne na wartości 1 i 0. Możemy to zrobić za pomocą podwójnej negacji, czyli wstawiamy dwa znaki minus przed funkcję. Zapis powinien wyglądać następująco:

=–(DZIEŃ.TYG($A$2:$A$1998;2)=G2)

Po zatwierdzeniu formuły otrzymamy wartości 0 i 1. Wartość logiczna PRAWDA zostanie zamieniona na 1, a FAŁSZ na 0 (rys. nr 8).

Rys. nr 8 – wartości logiczne zamieniona na 1 i 0

Teraz możemy łatwo zsumować nasze wyniki. Żebyśmy nie musieli tej formuły zatwierdzać w klasycznym Excelu kombinacją klawiszy Ctrl+Shift+Enter, korzystamy z funkcji SUMA.ILOCZYNÓW. Argumentem funkcji jest tablica1, czyli tablica uzyskana z poprzedniej formuły. Zapis powinien wyglądać następująco:

=SUMA.ILOCZYNÓW(–(DZIEŃ.TYG($A$2:$A$1998;2)=G2))

Po zatwierdzeniu formuły skrótem klawiszowym Ctrl+Enter otrzymamy ilość wszystkich transakcji przypadających na poniedziałek. Po skopiowaniu formuły w dół, otrzymamy dane dla pozostałych dni tygodnia (rys. nr 9).

Rys. nr 9 – ilość wszystkich transakcji dla poszczególnych dni tygodnia

Żeby obliczyć wartość sprzedaży postępujemy bardzo podobnie. Możemy skopiować poprzednią formułę. Zamiast podwójnej negacji (dwa minusy) zrobimy operację mnożenia przez kolumnę Sprzedaż, czyli zakres $B$2:$B$1998. Na chwilę usuniemy też funkcję SUMA.ILOCZYNÓW. Zapis formuły powinien wyglądać następująco:

=DZIEŃ.TYG($A$2:$A$1998;2)=G2)*$B$2:$B$1998

Po zatwierdzeniu formuły otrzymamy rozlane wartości sprzedaży z podaną wartością dla poniedziałku przedstawione na rys. nr 10.

Rys. nr 10 – rozlane wartości sprzedaży dla każdego poniedziałku

Aby otrzymać wyniki dla wszystkich dni tygodnia musimy otoczyć poprzednią formułę funkcją SUMA.ILOCZYNÓW. Zapis formuły powinien wyglądać następująco:

=SUMA.ILOCZYNÓW((DZIEŃ.TYG($A$2:$A$1998;2)=G2)*$B$2:$B$1998)

Po zatwierdzeniu formuły skrótem klawiszowym Ctrl+Enter i skopiowaniu w dół otrzymamy wartości sprzedaży dla poszczególnych dni tygodnia przedstawione na rys. nr 11.

Rys. nr 11 — wartości sprzedaży dla poszczególnych dni tygodnia

Excel — Dni tygodnia w innym języku — porada 421

W tym poście pokażemy, w jaki sposób podać dni tygodnia i miesiące w innych językach.

Zadanie to wykonamy na podstawie przykładowych danych z rys. nr 1.

Rys. nr 1 – przykładowe dane

W przykładowych danych mamy podane daty. Po naciśnięciu skrótu klawiszowego Ctrl+1 otworzy nam się okno Formatowania komórek, gdzie w różny sposób możemy sformatować nasze dane. W polu Typ możemy wybrać sposób pokazywania danych, np. żeby pokazywał się tylko dzień, najpierw miesiąc, rok itp. W polu Ustawienia regionalne (lokalizacja) możemy ustawić sobie język dla danego formatowania. Przykładowo, ustawmy sobie Stany zjednoczone (punkt 1 na rys. nr 2), a następnie ustawmy typ formatowania ze skróconą nazwą miesiąca (punkt 2).

Rys. nr 2 – okno Formatowania komórek

Teraz po przejściu w polu Kategoria na formatowanie Niestandardowe (punkt 1 na rys. nr 3), to w polu Typ oprócz standardowych oznaczeń dnia, miesiąca i roku pokazuje się jakiś dziwny kod (punkt 2).

Rys. nr 3 – kategoria formatowania – Niestandardowe

Te niestandardowe zapisy są związane z językiem tłumaczenia. Łatwo się domyślić, że chodzi o język angielski Stanów Zjednoczonych, bo mamy znak dolara ($), język en i oznaczenie US, czyli United States. Takie ustawienia potwierdzamy przyciskiem OK. Otrzymamy dane w pierwszej kolumnie sformatowane według naszych ustawień przedstawione na rys. nr 4.

Rys. nr 4 – dane sformatowane dla Stanów Zjednoczonych

Za pomocą skrótu klawiszowego Ctrl+Z wracamy do poprzednich ustawień, żeby pokazane były daty za pomocą liczb. Mimo, że korzystamy z polskiego Excela, możemy uzyskać dane pokazane w innych językach. Pełną listę tych kodów można znaleźć na stronie Microsoftu https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c?redirectedfrom=MSDN

Jest możliwość różnych zapisów tych samych kodów w zależności od języka i lokalizacji, co widać na rys. nr 5.

Rys. nr 5 – przykładowe kody według języków i lokalizacji

Powyższe kody możemy wykorzystać w funkcji TEKST, która formatuje wartośćCtr z komórki. Pierwszym argumentem funkcji jest wartość, czyli data z pierwszej kolumny. Drugi argument to format_tekst, czyli znak $, następnie kod ze strony Microsoftu zapisany w nawiasach kwadratowych.

Jeśli w zapisie funkcji TEKST w drugim argumencie podamy tylko dddd, to otrzymamy dane z podanymi nazwami dni tygodnia w domyślnym języku, w jakim korzystamy z programu Excel. Zapis formuły powinien wyglądać następująco:

=TEKST(A2;"dddd")

Rys. nr 6 – nazwy dni tygodnia otrzymane za pomocą funkcji TEKST w domyślnym języku

Możemy używać kodu liczbowego albo literowego. Otrzymamy nazwy dni tygodnia w różnych językach przedstawione na rys. nr 7.

Zapis formuły dla języka polskiego powinien wyglądać następująco:

=TEKST(A2;"[$-415]dddd")

Zapis formuły dla języka angielskiego i Stanów Zjednoczonych powinien wyglądać następująco:

=TEKST(A2;"[$-409]dddd")

Zapis formuły dla języka angielskiego i Wielkiej Brytanii powinien wyglądać następująco:

=TEKST(A2;"[$-en-GB]dddd")

Zapis formuły dla języka francuskiego i Francji powinien wyglądać następująco:

=TEKST(A2;"[$-fr]dddd")

Rys. nr 7 – dni tygodnia w różnych językach

Możemy szybko zamienić dni tygodnia na miesiące. Zaznaczamy zakres B2:H13, następnie za pomocą skrótu klawiszowego Ctrl+H otwieramy okno Znajdowania i zamieniania. Przechodzimy na zakładkę Zamień (punkt 1 na rys. nr 8), następnie w polu Znajdź wpisujemy dddd (punkt 2), a w polu Zamień na wpisujemy mmm (punkt 3). Takie ustawienia zatwierdzamy przyciskiem Zamień wszystko (punkt 4).

Rys. nr 8 – okno Znajdowania i zamieniania

Wyświetli nam się komunikat o ilości zamienionych danych przedstawiony na rys. nr 9, który zatwierdzamy przyciskiem OK.

Rys. nr 9 – komunikat Excela

Otrzymamy dane ze zamienionymi nazwami dni tygodnia na nazwy miesięcy w wybranych językach przedstawione na rys. nr 10.

Rys. nr 10 – nazwy dni tygodnia zamienione na nazwy miesięcy

Podsumowując wystarczy odpowiednie formatowanie, aby za pomocą funkcji TEKST pokazać nazwy dni tygodnia czy miesięcy w różnych językach.

Excel — Funkcja ILE.LICZB wszystko co powinieneś wiedzieć porada 390

W tym poście poznamy wszystko, co musicie wiedzieć o funkcji ILE.LICZB, aby jej swobodnie używać i mieć pewność, że zwraca nam poprawne wyniki. Temat ten omówimy na podstawie przykładowych danych z rys. nr 1.

Rys. nr 1 – przykładowe dane

Wydawało by się, że to prosta funkcja do obliczania ilości konkretnych liczb w komórkach, ale w Excelu z różnymi liczbami zdarzają się problemy. Na przykład jeśli zapiszemy liczbę z kropką (.), to Excel nie rozpozna tej liczby i potraktuje ją jako tekst. Prawidłowy zapis liczb w polskim Excelu używa przecinka do oddzielenia miejsc dziesiętnych (,). Jeśli za pomocą funkcji PODSTAW zamienimy w tej liczbie kropkę na przecinek, to Excel zapisze tę liczbę prawidłowo, ale nadal będzie traktował ją jako tekst (rys. nr 2). To, że Excel rozpoznaje liczbę jako tekst możemy łatwo rozpoznać, ponieważ wyrównuje ją do lewej strony komórki.

Rys. nr 2 – zamiana kropki na przecinek przy użyciu funkcji PODSTAW

Jeśli zapiszemy funkcję ILE.LICZB dla tego zakresu, nie zwróci ona żadnej wartości (rys. nr 3). Zapis takiej funkcji powinien wyglądać następująco: ILE.LICZB(A2:B2).

Rys. nr 3 – funkcja ILE.LICZB dla tekstu zwraca wartość 0 (zero)

Istotne jest, że wszystkie funkcje tekstowe zwracają tekst, a nie liczbę. Aby uzyskać z tekstu wartość liczbową, musimy wykonać na nim dowolne działanie matematyczne, np. do funkcji PODSTAW dodać wartość zero. Zapis formuły powinien wyglądać następująco:

=PODSTAW(A2:B2)+0

Po zatwierdzeniu takiej formuły tekst zostanie zamieniony na liczbę i wtedy funkcja ILE.LICZB zadziała prawidłowo (rys. nr 4).

Rys. nr 4 – działanie funkcji ILE.LICZB po zamianie tekstu na liczbę

Interesujące jest, że jeśli w argumencie funkcji ILE.LICZB zapiszemy wartość "1" (w podwójnych cudzysłowach), to Excel ją znajdzie, zostanie ona zliczona. Zapis formuły powinien wyglądać następująco:

=ILE.LICZB(A2:B2;"1")

Po zatwierdzeniu formuły zwróci nam ona kolejną wartość (rys. nr 5).

Rys. nr 5 – działanie formuły z zapisem wartości liczbowej jako tekst

W przykładowych danych w wierszu nr 4, mamy zapisane liczby jako tekst (w podwójnych cudzysłowach lub poprzedzone pojedynczym cudzysłowem). Sprawia to, że funkcja ILE.LICZB nie wykrywa żadnych wartości liczbowych i zwraca wartość zero (0). Widać to na rys. nr 6.

Rys. nr 6 – działanie funkcji ILE.LICZB w stosunku do liczb zapisanych jako tekst

Funkcja ILE.LICZB jest w stanie policzyć daty i czas (wiersz nr 6) w przykładowych danych). Dla Excela data i czas to nic innego jak liczby, co widać na rys. nr 7 po zmianie formatowania z Daty na Ogólne.

Rys. nr 7 – data i czas w postaci liczb i działanie funkcji ILE.LICZB

Kolejny omawiany przykład dotyczy wartości logicznych PRAWDA i FAŁSZ. Funkcja ILE.LICZB nie liczy takich wartości, nie interpretuje tych wartości jako 1 (PRAWDA) i 0 (FAŁSZ). Ale jeżeli wpiszemy wartość logiczną np. PRAWDA, jako jeden z argumentów funkcji, to funkcja go zliczy. Zapis formuły powinien wyglądać następująco: 

=ILE.LICZB(A8:B8;PRAWDA)

Po zatwierdzeniu takiej formuły funkcja ILE.LICZB zwróci nam wartość 1 (rys. nr 8).

Rys. nr 8 – działanie funkcji ILE.LICZB w odniesieniu do wartości logicznych

Jest to dla nas istotne, ponieważ mamy często do czynienia z funkcjami logicznymi, np. funkcją JEŻELI, która zwraca wartości logiczne (PRAWDA lub FAŁSZ). Zapiszmy jako kolejny argument funkcji ILE.LICZB funkcję JEŻELI dla prostego testu czy 1>2. Jeżeli warunek jest spełniony chcemy aby funkcja zwróciła wartość logiczną Prawda, a jeżeli nie – Fałsz. Zapis formuły powinien wyglądać następująco: 

=ILE.LICZB(A8:B8;PRAWDA;JEŻELI(1>2;Prawda, Fałsz))

Po zatwierdzeniu powyższej formuły funkcja ILE.LICZB zliczy kolejną wartość (rys. nr 9).

Rys. nr 9 – zliczanie wartości logicznej z funkcji JEŻELI

Istotne jest, że z np. funkcji JEŻELI musimy otrzymać pojedynczą wartość, ponieważ funkcja ILE.LICZB nie zlicza tablic. Czyli funkcja liczb zliczy nam wyniki testów logicznych, ale jeżeli zrobimy operację która zamieni zwykły test logiczny na tablicę, to funkcja ILE.LICZB nie zliczy tego wyniku. Zapis takiej formuły powinien wyglądać następująco:

=ILE.LICZB(A2:B2;{2}>3)

Po zatwierdzeniu takiej formuły otrzymamy dane przedstawione na rys. nr 10, w których funkcja ILE.LICZB nie zliczyła wyniku testu.

Rys. nr 10 – nie zliczanie tablic przez funkcję ILE.LICZB

Standardowe liczby są zliczanie bezproblemowo przez funkcję ILE.LICZB, co widać na rys. nr 11.

Rys. nr 11 – zliczanie standardowych liczb

W sytuacji, kiedy w danych mamy błędy, to w wyniku funkcji ILE.LICZB są one ignorowane. (rys. nr 12). Ważne jest, że funkcja ta zwraca wartość 0, a nie błąd.

Rys. nr 12 – ignorowanie błędów przez funkcję ILE.LICZB

Analogicznie wygląda sytuacja, kiedy w danych mamy puste komórki. Wtedy funkcja ILE.LICZB je ignoruje i zwraca wartość 0 (rys. nr 13).

Rys. nr 13 – ignorowanie pustych komórek przez funkcję ILE.LICZB

Tak samo zostanie zignorowany pusty ciąg tekstowy zapisany "" (dwoma podwójnymi cudzysłowami). Ale może się zdarzyć sytuacja, że zapiszemy kolejny argument funkcji ILE.LICZB i postawimy znak ; (średnik), a następni8e zamkniemy nawias formuły. Zapis takiej funkcji wyglądałby następująco:

=ILE.LICZB(A14:B14;"";)

Po zatwierdzeniu takiej formuły okaże się, że funkcja ILE.LICZB zliczy nam jedną pustą komórkę, ponieważ zinterpretuje pusty argument jako wartość zero (rys. nr 14).

Rys. nr 14 – zliczenie pustego argumentu przez funkcję ILE.LICZB

Co istotne, funkcja ILE.LICZB może pracować na wielu zakresach. Jeżeli będziemy chcieli zliczyć wszystkie występujące w danych liczby, wystarczy że w argumentach funkcji podamy poszczególne zakresy. Funkcja ta może pracować na 255 zakresach, podobnie jak funkcja SUMA. Zapis takiej formuły powinien wyglądać następująco:

=ILE.LICZB(A2:B2;A4:B4;A6:B6;A8:B16)

Po zatwierdzeniu powyższej formuły otrzymamy wynik przedstawiony na rys. nr 15.

Rys. nr 15 – zliczanie liczb z wielu zakresów

Funkcja ILE.LICZB nie ma skrótu klawiszowego jak funkcja SUMA, aby policzyć od razu całe zakresy (kolumny i wiersze w tabeli), ale w karcie Narzędzia główne w grupie poleceń autosumowania mamy do niej dostęp. Zaznaczamy zakres tabeli, jaki chcemy zliczyć, rozwijamy polecenie Autosumowanie (punkt 2 na rys. nr 16) z karty Narzędzia główne (punkt 1), a następnie wybieramy polecenie Zliczanie (punkt 3).

Rys. nr 16 – ścieżka dostępu do polecenia Zliczanie

Otrzymamy zliczone liczby w zaznaczonym zakresie danych przedstawione na rys. nr 17.

Rys. nr 17 – zliczone dane

Dzięki wykorzystaniu polecenia Zliczanie, możemy podobnie jak w funkcji SUMA, zliczyć wartości w komórkach, w poszczególnych wierszach i kolumnach. Według naszych danych z rys. nr 17 możemy łatwo sprawdzić ile miesięcy pracuje dla nas np. Ewa (zliczone wiersze) lub ile osób pracowało dla nas w Marcu (zliczone kolumny).

Musimy zwrócić uwagę, na komórkę K14, w której nie zliczamy wszystkich danych, tak jak to robiła funkcja SUMA.  Tutaj funkcja ILE.LICZB patrzy tylko na ostatni wiersz, dlatego mamy wynik 4. Zapis funkcji w tej komórce wygląda następująco:

=ILE.LICZB(G14:J14)

Z tego zapisu wynika, że funkcja podlicza ilość liczb w ostatnim wierszu a nie w całym zakresie. Aby uzyskać informację o ilości liczb w całym zakresie musimy ręcznie zmienić zakres w argumencie funkcji. Zapis formuły powinien wyglądać następująco:

=ILE.LICZB(G2:J13)

Po zatwierdzeniu takiej formuły otrzymamy sumaryczną ilość liczb w całym zakresie danych przedstawioną na rys. nr 18.

Rys. nr 18 – zliczona ilość liczb w całym zakresie danych

Na rys. nr 19 mamy przedstawione podsumowanie funkcji ILE.LICZB. Funkcja ta liczy ilość komórek z liczbami w zakresach danych. Potrafi zliczyć liczby, daty, czas. Pomija tekst, liczby zapisane jako tekst, wartości logiczne, błędy oraz puste komórki. Funkcja ta nie ma skrótu klawiszowego, ale można ją znaleźć w grupie poleceń Autosumowanie na karcie Narzędzia główne.

Rys. nr 19 – najważniejsze informacje o funkcji ILE.LICZB


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

Generator PESEL NIP i REGON — porada #298

W internecie znajdziesz wiele stron pozwalających wygenerować losowy PESEL. Ponieważ skupiam się na Excelu, dlatego postanowiłem zrobić taki generator w Excelu (przy okazji również generatory NIPREGON).
Żeby wygenerować losowy PESEL musimy znać jego strukturę. Większość z nas wie, że pierwsze 6 cyfr odpowiada za datę urodzenia. Już nie wszyscy wiedzą, że numery miesiąca zmieniają się w zależności od stulecia. Nas interesuje tylko XX wiek – lata 1900–1999 oraz XXI wiek – lata 2000–2099. XX wiek nie zmienia nic w numerowaniu miesięcy, ale XXI wiek dodaje liczbę 20 do numeru miesiąca w roku. Czyli osoba urodzona w 1910-05-23 i 2010-05-23 będzie miała początek PESEL odpowiednio 100523 i 102523. 

Jak to zrobić w Excelu? Przede wszystkim potrzebujemy wylosować datę urodzenia. Świetnie się tu sprawdza funkcja LOS.ZAKR. Której wpisujemy w cudzysłowach daty minimalną i maksymalną pomiędzy którymi chcemy losować:

=LOS.ZAKR("1900–01-01";"2010–01-01")

Porada 298 - Generator PESEL 01

Zanim zaczniemy przekształcać odpowiednio tą datę wylosujmy jeszcze płeć naszego posiadacza PESEL (od tego zależy 10 cyfra PESEL). Posłużymy się tutaj funkcją INDEKS, której na stałe wpiszemy tablicę liter ‘k’ i ‘m’ i będziemy losować albo 1 albo 2 pozycję tablicy (funkcja LOS.ZAKR):

=INDEKS({"k";"m"};LOS.ZAKR(1;2))

Porada 298 - Generator PESEL 02

Teraz zacznijmy przekształcać datę. Będziemy musieli ją podzielić na część odpowiedzialną za rok, miesiąc i dzień. Rok będzie najprostszy, bo wystarczy odpowiednio sformatować wylosowaną datę jako rok za pomocą funkcji TEKST:

=TEKST([Data];"rr")

Porada 298 - Generator PESEL 03

Powyższy zapis wstawia tylko 2 ostatnie cyfry z roku. Teraz przyszła pora na miesiąc. Z nim jest trudniej – możemy wyciągnąć miesiąc z daty za pomocą funkcji MIESIĄC, ale musimy dołożyć mechanizm, który dodawałby 20 dla XXI wieku (inne stulecia poza dwoma wcześniej ustalonymi nas nie interesują). W taki razie wystarczy sprawdzić, czy ROK z daty jest większy od 1999 i jeżeli tak to zwrócić 20, a jeśli nie to 0 za pomocą funkcji JEŻELI. Potrzeba do tego dodać jeszcze numer miesiąca z daty:

JEŻELI(ROK([Data])>1999;20;0)+MIESIĄC([Data])

Niestety to jeszcze nie wystarczy ponieważ dla miesięcy z XX wieku mogą nam wyjść wyniki 1 cyfrowe, a my potrzebujemy mieć zawsze 2 cydry, dlatego powyższą formułę musimy wstawić do funkcji TEKST, która będzie wymuszała wiodące 0. Tak uzyskaną formułę łączymy z cyframi roku:

=TEKST([Data];"rr")&TEKST(JEŻELI(ROK([Data])>1999;20;0)+MIESIĄC([Data]);"00")

Porada 298 - Generator PESEL 04

Potrzebujemy jeszcze dodać 2 cyfry jako dni. Robimy to analogicznie jak rok tylko wpisujemy do funkcji TEKST kod odpowiedzialny za formatowanie dni:

TEKST([Data];"dd")

W ten sposób mamy pełną formułę budującą 6 cyfr numeru PESEL.

=TEKST([Data];"rr")&TEKST(JEŻELI(ROK([Data])>1999;20;0)+MIESIĄC([Data]);"00")&TEKST([Data];"dd")

Porada 298 - Generator PESEL 05

Teraz zajmijmy się wyznaczeniem 4 kolejnych cyfr. Powiedzieliśmy sobie, że 10 cyfra oznacza płeć. Dokładnie liczby {0;2;4;6;8} oznaczają kobietę, a {1;3;5;7;9} mężczyznę. 3 wcześniejsze cyfry to kolejność urodzenia w danym dniu, czyli wystarczy funkcja LOS.ZAKR z odpowiednimi granicami. A musimy pamiętać, że to zawsze muszą być 3 cyfry, więc dodajemy funkcję TEKST, która zapewni ewentualne wiodące zera.

=TEKST(LOS.ZAKR(1;999);"000")

Jak jednak ustalić numer odpowiedzialny za płeć.

Jak się mu przyjrzymy to możemy zobaczyć, że jeśli będziemy losować liczbę z przedziału od 0 do 4 i przemnożymy ją przez 2 to zawsze wyjdzie nam kobieta. W takim razie wystarczy, że sprawdzimy za pomocą funkcji JEŻELI, czy wylosowaliśmy wcześniej kobietę czy mężczyznę i odpowiednio zwracali 0 lub 1 i tą wartość dodali do naszego losowania. 

LOS.ZAKR(0;4)*2+JEŻELI([@Płeć]="k";0;1)

Łącząc powyższe dwie formuły mamy 4 kolejne cyfry numeru PESEL:

=TEKST(LOS.ZAKR(1;999);"000")&LOS.ZAKR(0;4)*2+JEŻELI([@Płeć]="k";0;1)

Porada 298 - Generator PESEL 06

Teraz czeka nas najtrudniejsze zadanie – musimy obliczyć cyfrę kontrolną. Zasada jej obliczania wymaga przemnożenia każdej cyfry przez przypisaną jej wagę, a następnie ich zsumowanie. Wagi możemy zapisać w tablicy {1;3;7;9;1;3;7;9;1;3} ważne, że ta tablica ma w Excelu orientację pionową (każdy średnik oznacza nowy wiersz). 

Już kilka razy wyciągaliśmy pojedyncze znaki z tekstu (np.: porada 295 i 296) z numerem PESEL jest analogicznie, a nawet prościej, bo zawsze mamy 10 cyfr (musimy je tylko połączyć z wcześniejszych obliczeń) i możemy zapisać na stałe tablicę {1;2;3;4;5;6;7;8;9;10} (ta sama orientacja co tablica z wagami, żeby mieć pewność poprawnych wyników). Czyli nasze mnożenie i sumowanie wygląda tak:

=SUMA(FRAGMENT.TEKSTU([@DataP]&[@PłećP];{1;2;3;4;5;6;7;8;9;10};1)*{1;3;7;9;1;3;7;9;1;3})

To jeszcze nie koniec naszych obliczeń, bo z takiego mnożenia i sumowania (swoją drogą dzięki wpisaniu tablic na stałe możemy zatwierdzać tą formułę normalnie, a nie jako formułę tablicową) daje wynik większy od 1 cyfry. W obliczeniach liczby kontrolnej musimy wyciągnąć resztę dzielenia przez 10 (funkcja MOD) i odjąć ją od 10. Ponieważ czasami wynik może wyjść 10, to jeszcze raz musimy go wstawić do funkcji MOD:

=MOD(10-MOD(SUMA(FRAGMENT.TEKSTU([@DataP]&[@PłećP];{1;2;3;4;5;6;7;8;9;10};1)*{1;3;7;9;1;3;7;9;1;3});10);10)

Porada 298 - Generator PESEL 07

Uff. Mamy wszystkie elementy teraz musimy tylko połączyć je razem:

=[@DataP]&[@PłećP]&[@Kontrolna]

Porada 298 - Generator PESEL 08

W załączonym pliku znajdziesz jeszcze mechanizmy losujący numery NIPREGON.

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

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