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 PRAWDA i FAŁ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:
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
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
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 TEKSTpokazać nazwy dni tygodnia czy miesięcy w różnych językach.
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:
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.
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.
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 NIP i REGON).
Ż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")
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))
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")
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:
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:
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:
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:
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.
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)
Jednak przy wyszukiwaniu poszczególnych cyfr pojawią się błędy, gdy danej cyfry nie ma w przeszukiwanym tekście.
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")
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}
Ponieważ nas interesuje pierwsze wystąpienie jakiejkolwiek cyfry dlatego naszą dotychczasową formułę wstawimy do funkcji MIN.
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ę.
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;DŁ(A2)-DŁ(C2))
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};"")
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.
Tylko, że nam nie są potrzebne same teksty, tylko ich długość, czyli naszą formułę wstawiamy do funkcji DŁ. Znowu ponieważ wpisaliśmy na stałe tablicę cyfr (hardkodowanie) nie musimy zatwierdzać naszej formuły jako formuły tablicowej.
=DŁ(PODSTAW(I2;{0\1\2\3\4\5\6\7\8\9};""))
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.
=DŁ(I2)-DŁ(PODSTAW(I2;{0\1\2\3\4\5\6\7\8\9};""))
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.