You are on page 1of 30

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Excel. Analiza danych


biznesowych
Autor: Gerald Knight
Tumaczenie: Marcin Karbowski
ISBN: 83-246-0506-1
Tytu oryginau: Analyzing Business Data with Excel
Format: B5, stron: 256
Przykady na ftp: 8001 kB

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl

Wykorzystaj Excel w swojej firmie


Przeprowadzaj analizy statystyczne.
Steruj procesami w firmie.
Monitoruj obcienie systemw.
Excel jest jedn z najpopularniejszych aplikacji biurowych, znan niemal wszystkim
posiadaczom komputerw. Jednak wikszo uytkownikw wykorzystuje jedynie
cz moliwoci tej aplikacji, nie wiedzc, e oprcz obliczania sum i rednich
w standardowych arkuszach moe ona uatwi prac na wiele sposobw. Narzdzia
oferowane przez Excel, m.in. te, ktre su do analizy i wizualizacji, warto stosowa
w znacznie szerszym zakresie, gromadzc i przetwarzajc dane z wielu innych systemw.
Ksika Excel. Analiza danych biznesowych przedstawia sposoby zastosowania tej
aplikacji do realizacji zada zwizanych z kierowaniem przedsibiorstwem bd
zespoem produkcyjnym. Czytajc j, poznasz przykadowe aplikacje Excela i nauczysz
si korzysta z wbudowanych w ten program narzdzi. Dowiesz si, jak przeprowadza
analizy za pomoc wykresw i tabel przestawnych, wyznacza trendy na podstawie
danych historycznych, korzysta z moduu Solver oraz tworzy wasne moduy
obliczeniowe.
Obliczenia i analizy statystyczne
Korzystanie z tabel i wykresw przestawnych
Tworzenie modeli matematycznych
Prognozowanie obcienia
Monitorowanie systemw i procesw
Optymalizowanie funkcji
Import danych ze rde zewntrznych
Prezentacja danych
Przekonaj si, jak bardzo Excel moe usprawni dziaanie Twojej firmy

Wstp .............................................................................................................................. 7
1. Statystyka w Excelu ....................................................................................................... 11
Formuy tablicowe
Porednie adresowanie komrek
Funkcje statystyczne

11
13
16

2. Tabele przestawne i rozwizywanie problemw ...................................................... 33


Podstawowe informacje o tabelach przestawnych
Zmienianie danych
Opcje tabeli przestawnej

34
47
50

3. Prognozowanie obcienia prac ............................................................................... 53


Procedura
Tworzenie aplikacji

54
61

4. Tworzenie modeli ......................................................................................................... 79


Regresja
Definiowanie problemu
Dopracowywanie metryk
Analiza
Budowanie modelu
Analiza rezultatw
Testowanie zwizkw nieliniowych

79
83
86
88
93
95
98

5. Mierzenie jakoci .........................................................................................................101


Statystyczne Sterowanie Procesami
Uruchamianie aplikacji

102
104

Wygld aplikacji
Dokonywanie zmian w aplikacji

105
115

6. Monitorowanie zoonych systemw ........................................................................ 119


Aplikacja
Dane
Ustawienia
Obszar roboczy
Makra

120
122
123
125
135

7. Kontrola procesw ......................................................................................................141


Dane
Aplikacja
Obliczenia

142
143
146

8. Kontrola przepywu pracy ......................................................................................... 163


Aplikacja
Dane
Obliczenia
VBA
Rozbudowywanie aplikacji

163
167
167
171
175

9. Optymalizacja ..............................................................................................................177
Szukaj wyniku
Solver

177
186

10. Importowanie danych ................................................................................................ 201


Pliki tekstowe
Bazy danych
XML

201
206
213

11. Problemy z danymi ..................................................................................................... 219


Liczby
Daty
Raporty
Rwnowano

219
222
223
228

12. Techniki efektywnej prezentacji ............................................................................... 231


Szacunek dla informacji i jej odbiorcy
Due arkusze
Wykresy

Spis treci

231
232
232

Obrazy i inne obiekty


Zoono
Powtarzane elementy
Zagszczenie informacji
Podkrelanie i wyrnianie informacji

234
237
237
238
240

Skorowidz ...................................................................................................................245

Spis treci

ROZDZIA 3.

Prognozowanie polega na wykorzystywaniu informacji dostpnych w danym momencie i przewidywaniu na ich podstawie przyszego rozwoju wypadkw. Korzystamy z naszej wiedzy
o przeszoci, decydujc, o ktrej godzinie wsta z ka, ile jedzenia kupi i gdzie pojecha
na wakacje. Zwykle nie zastanawiamy si nad sposobem, w jaki podejmujemy te decyzje, i nie
oceniamy ich skutkw. Prognozowanie w rozumieniu biznesowym ma charakter bardziej
strukturalny. Do dyspozycji mamy specjalistyczne techniki, pozwalajce modelowa zwizki
midzy dostpnymi informacjami a przyszymi wartociami badanych parametrw.
Prognozy rzadko kiedy idealnie si sprawdzaj. Naley si spodziewa pewnej rnicy midzy prognoz a wartoci, ktr w rzeczywistoci przybierze badany parametr. W wikszo
przypadkw nie wystarczy zatem opracowanie prognozy, trzeba rwnie oszacowa jej dokadno. Oznacza to, i przewidywanie polega na wyznaczeniu pewnego zakresu wartoci
i przypisaniu im okrelonego prawdopodobiestwa.
W tym rozdziale zajmiemy si przewidywaniem obcienia prac w typowym procesie biznesowym. Opisana przykadowa aplikacja prognozuje ilo telefonw do dziau informacji,
jednak wykorzystane w niej narzdzia mog by rwnie zastosowane w analizie wielu innych problemw. Przewidywane wartoci tworzone s z wykorzystaniem danych z przeszoci. W tym przypadku przysza ilo telefonw szacowana jest na podstawie informacji z kilku ostatnich tygodni.
Niniejszy rozdzia opisuje rwnie techniki tworzenia aplikacji w Excelu. Wykorzystuje ona
poczenie organizacji, funkcji skoroszytu, formatowania oraz jzyka VBA. Na koniec otrzymamy kompletn aplikacj prognozujc obcienie prac.
Poniewa jest to pierwsza aplikacja opisywana w tej ksice, omwimy w szczegach cay
proces jej tworzenia, zaczynajc od wykorzystywanych funkcji.
Nazwy uytych funkcji widoczne s w tabeli 3.1. Wikszo z nich zostanie opisana w trakcie
omawiania samej aplikacji. Funkcje INDEX, ADR.POR oraz ADRES bd wykorzystywane
w aplikacjach zamieszczonych w dalszej czci ksiki. Rola wymienionych funkcji jest specyficzna, a opanowanie zasad ich dziaania niezbdne do zrozumienia omawianej aplikacji.
Z tego wzgldu przed przejciem do dalszej czci rozdziau naley zapozna si z zawartymi w rozdziale 1. informacjami na ich temat.
W aplikacji wykorzystano rwnie narzdzia opisane w tabeli 3.2.

53

Tabela 3.1. Funkcje programu Excel zastosowane w przykadowej aplikacji opisywanej w tym rozdziale
INDEKS()

NR.KOLUMNY()

UFNO()

ADR.POR()

SUMA()

ZAOKR.DO.CAK()

ADRES()

MIN()

MODU.LICZBY()

DZIE.TYG()

JEELI()

NORMALIZUJ()

WIERSZ()

REDNIA()

ROZKAD.NORMALNY.S()

MAX()

ODCH.STANDARDOWE()

Tabela 3.2. Narzdzia programu Excel wykorzystane w przykadowej aplikacji opisywanej w tym rozdziale
Narzdzie

Opis

Formatowanie

Formatowanie pozwala kontrolowa wygld aplikacji. Zwraca uwag na wane informacje,


zaznaczajc istotne elementy widoczne na ekranie.

Nazwane komrki i nazwane


zakresy komrek

Nadawanie nazw komrkom i ich zakresom pozwala stworzy jasny i przejrzysty interfejs
midzy poszczeglnymi czciami aplikacji.

Formuy tablicowe

Formuy tablicowe umoliwiaj skrcenie oblicze, dziki czemu nie ma koniecznoci


tworzenia osobnych kolumn dla poszczeglnych operacji matematycznych.

Wykresy

Wykresy pozwalaj przedstawi liczby w formie graficznej. W ten sposb uytkownik


nie koncentruje si na samych liczbach, ale na ich znaczeniu i pyncych z nich wnioskach.

Jzyk VBA

Jzyk VBA pozwala zwikszy potencja programu Excel i dopasowa go do wasnych potrzeb.

Procedura
Najpierw omwimy konieczne do wykonania obliczenia. Naszym zadaniem jest opracowanie
jak najlepszej prognozy, zmierzenie jej dokadnoci i poradzenie sobie z ewentualnymi anomaliami. Program Excel daje nam odpowiednie narzdzia, zanim jednak zaczniemy wpisywa
formuy, musimy zrozumie dane, ktrymi dysponujemy.

Dane
W tym rozdziale wykorzystujemy dane dziau informacji telefonicznej. Pracuje on 5 dni w tygodniu. Zgromadzone dane to po prostu informacje o iloci telefonw odebranych w poszczeglnych dniach.
Wykorzystane tu techniki mona zastosowa w wielu innych sytuacjach wymagajcych analizy obcienia prac. Celem jest wyznaczenie przewidywanych wartoci badanego parametru
w danych jednostkach czasu. Wartoci te mog wykazywa pewien oglny trend, charakteryzujcy si krtkoterminowym zwikszaniem lub zmniejszaniem iloci czonych rozmw.
Dokadno prognozy zostanie oszacowana celem wyznaczenia zakresu przewidywanych
zmian i ich prawdopodobiestwa.
Model obcienia prac powinien radzi sobie zarwno z przewidywalnymi, jak i nieprzewidywalnymi zmianami wartoci. atwo przewidzie, e zbliaj si wita, ale dane z grudnia
nie stanowi dobrego materiau do tworzenia prognoz na stycze. Na rzeczywiste wartoci
badanych parametrw wpyw ma bardzo wiele rnych czynnikw zewntrznych. Konkurencja moe podnie ceny, moe nastpi awaria serwera, a burza niena moe spowodowa brak dostaw prdu w znacznej czci kraju. W rezultacie badane obcienie prac moe
si nagle zwikszy lub zmniejszy w sposb trudny do przewidzenia.
54

Rozdzia 3. Prognozowanie obcienia prac

Przykadowe dane wykorzystane w tym rozdziale pochodz z prawdziwego dziau informacji telefonicznej i s opisem rzeczywistego procesu biznesowego.

Prognozy
Czas tworzy niepewno. Im dalsz przyszo chcemy przewidzie, tym mniejsza bdzie
dokadno naszej prognozy. W tym rozdziale zaczniemy od prognozy na najbliszy tydzie.
W miar uzyskiwania dodatkowych informacji oszacowanie bdzie poprawiane i w efekcie
otrzymamy prognoz dzienn. Stworzone te zostan prognozy na poszczeglne godziny,
ktrych wartoci wykorzystywane bd do poprawienia dokadnoci oszacowa dziennych.

Dugo cyklu
Dugo cyklu to ilo obserwacji w cyklu. Wiele przedsibiorstw dziaa w cyklu tygodniowym.
Poniedziaki maj wasn specyfik, a pitki wasn. Jeli proces trwa 5 dni, dugo cyklu
wynosi 5. Oczywicie nie wszystko dzieje si w okresach 5-dniowych. Czasem maj one dugo miesica lub godziny, a niekiedy jest to zupenie inny, nietypowy przedzia czasu. W kadym jednak przypadku niezmiernie wane jest okrelenie iloci obserwacji w danym cyklu
i zwykle wiedz t mona zdoby bez specjalnego analizowania danych. Jeli jednak nie jestemy pewni, lepiej to sprawdzi.
W tym przykadzie wykorzystamy dane dotyczce iloci pocze telefonicznych zrealizowanych w okresie 30 dni. Informacja dziaa od poniedziaku do pitku, w zwizku z czym
prawdopodobnie dugo cyklu wynosi 5 dni. Aby znale jego rzeczywist dugo, musimy
skorelowa liczb okrelajc ilo rozmw z ni sam, przesunit o rne iloci dni. Przesunicie dajce najwiksz korelacj to wanie dugo cyklu.
W tym celu wykorzystamy funkcj WSP.KORELACJI. Bazuje ona na dwch argumentach w postaci zakresw o tej samej iloci komrek, a jako wynik zwraca korelacj midzy wartociami
w podanych zakresach. Formua w kolumnie korelacja brzmi: =WSP.KORELACJI(B$2:B$21;B3:
B22). Po jej wpisaniu przecignito j do kolejnych 10 komrek. Wysoki wspczynnik korelacji uzyskano jedynie w 5. i 10. komrce. Potwierdza to tez o 5-dniowym cyklu. Wzajemne
korelowanie tych samych liczb nazywamy autokorelacj.
Caa procedura pokazana jest na rysunku 3.1.

rednia
Najprostsza prognoza to zaoenie, i kady dzie bdzie si charakteryzowa tak sam iloci pocze telefonicznych jak odpowiadajcy mu dzie poprzedniego tygodnia. Moe ono
jednak spowodowa problemy, jeeli okae si, i tydzie wczeniej wystpiy jakie anomalie. Lepiej zatem opiera si na wartoci redniej. Zwyka rednia moe zosta znieksztacona
przez bardzo nietypowe wartoci, dlatego te lepiej wykorzystywa redni filtrowan. Eliminuje ona najwysze i najnisze wyniki pomiaru przed obliczeniem redniej, co umoliwia
znacznie lepsze oszacowanie badanych wartoci.
Opisan operacj wykonuje si w dwch etapach. Najpierw naley skonstruowa tabel zawierajc wartoci dla jednego dnia (na przykad poniedziaku). Nastpnie obliczamy sum,
odejmujemy maksymalne i minimalne wartoci, a wynik dzielimy przez liczb mniejsz o 2
od iloci zsumowanych liczb.

Procedura

55

Rysunek 3.1. Wykorzystywanie korelacji w celu wyznaczenia dugoci cyklu

Do dyspozycji mamy dane z 5 tygodni. Pierwszy dzie to poniedziaek 02-mar-98, na licie


znajduje si jeszcze 5 kolejnych poniedziakw. Z praktyki wynika, e ilo tygodni pozwalajca uzyska najlepszy wynik bywa rna. Z jednej strony dua ilo danych daje wiksz
precyzj oszacowania, z drugiej jednak zbyt dua liczba cykli moe prowadzi do przekama
z powodu wystpujcych zmian sezonowych. W wikszoci przypadkw znakomicie sprawdza si okres 8 tygodni.
Funkcja INDEKS tworzy list wartoci dla wybranego dnia na podstawie analizy zdefiniowanego zakresu. Pierwszy z jej argumentw to zakres komrek zawierajcych list wartoci. Kolejny to numer wybranego elementu listy. W tym przypadku potrzebne nam s numery wierszy zawierajcych dane dotyczce poniedziakw. Pierwszy z nich to wiersz drugi, a pierwsza
warto w kolumnie Wiersze (komrka C2) to 2. Formua w komrce C3 brzmi: =C2+5. Dodajemy 5, poniewa tyle wynosi dugo cyklu. Formu przecigamy do komrki C6. W komrce D2 znajduje si nastpujca formua: =INDEKS(B$1:B$26;C2). Wskazuje ona na drugi
element listy B1:B26. T formu rwnie naley przecign w d. Filtrowan redni oblicza formua: =LICZBA.CAK((SUMA(D2:D6)-(MAX(D2:D6)+MIN(D2:D6)))/3). Wykorzystujemy 5 wartoci, ale najwysza i najnisza s eliminowane, sum dzielimy wic przez 3. Funkcja LICZBA.CAK zwraca warto jako liczb cakowit. Poniewa badamy ilo pocze
telefonicznych, nie ma sensu wykorzystywa wartoci rzeczywistych nie istnieje przecie
co takiego jak p telefonu! W opracowywanej aplikacji filtrowana rednia stanowi prognoz
tygodniow. Uzyskujemy dziki niej oszacowanie iloci telefonw na tydzie naprzd. Wykorzystalimy wartoci z piciu poniedziakw w okresie od 2. marca do 3. kwietnia i utworzylimy prognoz na kolejny poniedziaek 6. kwietnia. Efekt opisanych oblicze przedstawiony jest na rysunku 3.2.

56

Rozdzia 3. Prognozowanie obcienia prac

Rysunek 3.2. Obliczanie redniej filtrowanej

Dopasowanie prognozy do trendu


Trend to zmiana wartoci redniej w czasie. Z roku na rok moemy oczekiwa wzrostu sprzeday lub spadku iloci skarg. Jednak w krtkim czasie trendy zwykle niewiele znacz. 5-procentowy wzrost w skali roku oznacza tygodniowy wzrost poniej 0,1%. Systemy biznesowe
nie s przewidywalne w tak maych przedziaach wartoci. W rezultacie tego typu trend nie
ma adnego znaczenia dla tworzonej prognozy. Istniej jednak inne czynniki. W przypadku
kadej operacji wartoci zwikszaj si i zmniejszaj z tygodnia na tydzie. Tego typu krtkoterminowe trendy maj znaczny wpyw na dokadno prognozy.
Zrozumienie trendw jest niezbdne podczas budowania dokadnego modelu prognozujcego.
Obliczy naley stosunek wartoci prognozowanych (filtrowanej redniej) do wartoci rzeczywistych. Na rysunku 3.3 widoczne bdy nie s losowe. Prognozowane wartoci s niskie
w okresie paru dni, a przez kolejnych kilka wysokie. Nie mamy tu do czynienia z prawdziwym trendem, a jedynie ze zmiennymi okresami wysokich i niskich wartoci.
Oznacza to, e dokadno mona poprawi przez dopasowanie oparte na pomiarze bdu
oszacowania z poprzedniego dnia. Bdy polegajce na znacznych odchyleniach wartoci
w jednym kierunku oznacza mog wystpowanie dugoterminowego trendu. Taka sytuacja
wymaga moe innego podejcia ni wykorzystywanie do pomiaru wartoci tygodniowych.
Jeli bdy nie wykazuj adnych prawidowoci, najlepiej zapomnie o trendzie, a do prognozowania wykorzystywa redni filtrowan. W omawianym przypadku dopasujemy j
w oparciu o 1,5 wartoci bdu z poprzedniego dnia. W wikszoci przypadkw nadaje to
prognozie odpowiedni kierunek, nie powodujc przy tym zbytniego zawyania lub zaniania szacowanych wartoci.
Procedura

57

Rysunek 3.3. Analiza bdw

Nastpnie obliczymy dopasowan prognoz na dany dzie. Uwzgldnia ona bdzie aktualny trend, co zwikszy jej dokadno. Na rysunku 3.4 definiujca dopasowan prognoz formua (komrka D17) brzmi: =C17*((1+(B16/C16))/2). Mnoy ona warto w komrce C17
przez (1+(B16/C16))/2, gdzie B16/C16 to stosunek wartoci rzeczywistej do prognozowanej.
Chcemy jednak wykorzysta jedynie poow tej liczby. Z tego wzgldu formua dzieli zwikszon o 1 proporcj przez 2. Oglnie dopasowana prognoza jest o 10% dokadniejsza ni filtrowana rednia.

Rysunek 3.4. Poprawianie dokadnoci prognozy

58

Rozdzia 3. Prognozowanie obcienia prac

Formua redniego bdu w kolumnie Dopasowana prognoza brzmi: {=REDNIA(MODU.LICZBY(


B3:B16-D3:D16))}. Jest to formua tablicowa. Tworzy ona wektor (list) wartoci bezwzgldnych rnic midzy wartociami rzeczywistymi a prognozowanymi. Jako wynik podaje redni tych wartoci. Daje to ten sam efekt co utworzenie nowej kolumny zawierajcej formu
=MODU.LICZBY(B3-C3), cigncej si do wiersza 16, a nastpnie wycignicie redniej z zawartych w niej liczb. Wykorzystujc formu tablicow, wykonujemy to samo obliczenie bez
dodawania 14 zbdnych formu do arkusza.

Okrelanie przedziau ufnoci


rednia dzienna rzeczywista ilo telefonw wynosi okoo 14 300, z kolei redni bd dopasowanej prognozy wynosi 520, co jest rwne mniej wicej 3,5% oznacza to, i prognoza okrela tak naprawd pewien zakres wartoci.
W arkuszu Ustawienia uytkownik ustali moe przedzia ufnoci. Aplikacja okreli zakres dopasowanej prognozy o takim prawdopodobiestwie. Jeli przedzia ufnoci ustawiony zostanie na 0,9, aplikacja wywietli prognoz oraz modyfikator +/- rwny wartoci zakresu. Warto rzeczywista znajdzie si w wybranym zakresie z prawdopodobiestwem 90%.
Na rysunku 3.4 dopasowana prognoza na kolejny dzie wynosi 14 630. Warto rzeczywista
wynosi bdzie 14 630 +/ 316 z prawdopodobiestwem 90%. Formua tablicowa dla tego obliczenia to: {=UFNO(0,1;ODCH.STANDARDOWE(D3:D16-B3:B16);14)}. Funkcja UFNO jako
wynik zwraca przedzia ufnoci. Jej dziaanie opiera si na trzech argumentach. Pierwszy to
podany poziom istotnoci. Jest to warto bdu oczekiwanego; jeli wic chcemy uzyska
poziom ufnoci rwny 0,9, musimy jako parametr funkcji wpisa 1-0,9, czyli 0,1. Kolejna
warto to odchylenie standardowe. W tym przypadku obliczane jest ono na podstawie rnic midzy wartociami rzeczywistymi a dopasowanymi prognozami. Obliczenie to jest czci formuy tablicowej. Ostatni argument to ilo wykorzystywanych wartoci jest ich 14.

Anomalie
Problem stanowi wita, podobnie jak wszelkie due, krtkoterminowe skoki wartoci. S
one trudne do przewidzenia i zmniejszaj dokadno pniejszych prognoz, poniewa wykorzystywane w tym rozdziale techniki bazuj na zgromadzonych danych z przeszoci. Filtrowanie redniej rozwizuje problem zwykych skokw wartoci. Zdarzaj si jednak anomalie
o tak duej skali, i jedynym rozwizaniem jest ich usunicie z opracowywanych danych. Najlepszym przykadem s tutaj ostatnie 2 tygodnie grudnia kadego roku.
Po wpisaniu wartoci rzeczywistej aplikacja sprawdza bd prognozy i oblicza prawdopodobiestwo przekroczenia wartoci cechujcej normalny rozkad bdw. Oczywicie zakadamy tu, i bdy maj rozkad normalny.
Na rysunku 3.5 wprowadzona zostaa warto rzeczywista dla dnia 17-cze-98. redni bd dla
ostatnich 14 dni wynosi 520,95. Bd dla omawianego dnia wynosi 538. Aby stwierdzi, z jakim prawdopodobiestwem warto ta stanowi anomali, konieczne jest wyznaczenie odchylenia standardowego dla ostatnio obliczonych bdw. Odpowiedzialna jest za to formua
tablicowa {=ODCH.STANDARDOWE(D3:D16-B3:B16)}, zawarta w komrce D23. Po raz kolejny
wykorzystujemy tu formu tablicow, aby unikn niepotrzebnego tworzenia dodatkowych

Procedura

59

kolumn z obliczeniami. W komrce D24 znajduje si formua {=REDNIA(D3:D16-B3:B16)},


obliczajca redni bd. Wynik rni si od wartoci w komrce D19, ktra okrela redni bd
na podstawie wartoci bezwzgldnej.

Rysunek 3.5. Wyszukiwanie anomalii

Naley ustali, jak bardzo (biorc jako jednostk odchylenie standardowe) obliczony bd rni si od redniej bdw. Warto t okrela funkcja NORMALIZUJ. Badany bd jest rwny
B17D17. D24 to obliczona powyej rednia bdw, a D23 to odchylenie standardowe. Formua =MODU.LICZBY(NORMALIZUJ(B17-D17;D24;D23)) w komrce D25 oblicza, jak bardzo
bd rni si od wartoci redniej bdw (w odchyleniach standardowych).
Chcemy rwnie wiedzie, jaka cz rozkadu jest bardziej zbliona do redniej ni wyznaczony bd. Dziki temu bdziemy mogli okreli, z jakim prawdopodobiestwem jest on
zbyt duy. Wykorzystujc wynik dziaania funkcji NORMALIZUJ, formua w komrce D26:
=ROZKAD.NORMALNY.S(D25) wyznacza cz rozkadu mieszczc si pomidzy redni a wartoci w komrce D23. W omawianym tu przykadzie 86% bdw ma warto mniejsz od
redniej o 1,06 odchylenia standardowego.
Prognoza moe by wysoka lub niska. Z tego wzgldu rozkad bdw ma dwa obszary kracowe. Ostateczn odpowied daje nam formua w komrce D27, ktra brzmi =(D26-0,5)*2.
Odejmujemy 0,5, poniewa funkcja ROZKAD.NORMALNY.S bierze pod uwag tylko jeden
z kracowych obszarw rozkadu, i mnoymy przez 2, gdy bd moe wystpi w dowolnym z nich. Oszacowanie wskazuje, i 71% bdw przyjmie warto mniejsz ni 538. Dane
z aktualnego dnia s zatem normalne. Opisane obliczenia ilustruje rysunek 3.5.
Jeli prawdopodobiestwo anomalii jest zbyt wysokie, warto z danego dnia naley pomin
podczas obliczania prognozy. W przedstawionej w dalszej czci rozdziau aplikacji uytkownik moe ustali stopie wykrywalnoci anomalii w arkuszu Ustawienia. Jeeli jej prawdopodobiestwo jest wysze od wyznaczonego stopnia, aplikacja zastpuje w obliczeniach dan
warto jej odpowiednikiem z poprzedniego tygodnia.
60

Rozdzia 3. Prognozowanie obcienia prac

Tworzenie aplikacji
Wiemy ju, jak aplikacja powinna dziaa w teorii. Musimy jednak przeoy nasze rozwaania na praktyczne rozwizanie, ktre mona zaproponowa potencjalnemu uytkownikowi.
W tej czci rozdziau stworzymy za pomoc programu Excel kompletn aplikacj, opart na
wczeniej opisanych procesach.

Projekt
W trakcie tworzenia aplikacji bardzo atwo straci kontrol nad zawartymi w niej obliczeniami i procesami. Z tego wzgldu wane jest jej odpowiednie zaplanowanie i utworzenie oglnej struktury projektu. Przykadowa aplikacja skada si z kilku arkuszy, z ktrych kady ma
osobn funkcj.
Arkusz Dane przechowuje informacje i nie zawiera adnych formu. Nie jest rwnie sformatowany, poniewa uytkownik nie bdzie do niego zaglda. Zawiera on jedynie dane, na
podstawie ktrych wykonywane bd wszystkie obliczenia. Do tego arkusza wprowadzane
s take nowe informacje. Takie rozwizanie ma swoje zalety: w przypadku zmiany rda
danych aktualizacji wymaga bdzie jedynie interfejs midzy zawierajcym je arkuszem a ich
nowym rdem.
Wszystkie obliczenia zawarte s w arkuszu ObszarRoboczy. Tylko ten arkusz zawiera funkcje
skoroszytu.
Arkusz Prognoza suy do prezentacji danych. Jest poczony z arkuszem ObszarRoboczy za pomoc nazwanych komrek i ich zakresw. Nie zawiera formu, a jedynie odpowiednio sformatowane i zorganizowane informacje.
W arkuszu Ustawienia dostpne s opcje aplikacji. Aplikacja zawiera rwnie dwa specjalistyczne arkusze: Wykres, ktry przedstawia wykres dokadnoci prognozy, oraz Godziny, ktry zawiera tabel prognoz tworzonych na kolejne godziny. Nie zawieraj one formu, a ich
jedyn funkcj jest przechowywanie i prezentowanie informacji.
Kluczow czci aplikacji jest wyznaczanie prognoz w arkuszu ObszarRoboczy. Aby jednak
stworzone rozwizanie byo kompletne i czytelne, naley wok wspomnianego arkusza zbudowa odpowiedni struktur. W jaki sposb przedstawi wyniki oblicze? Jak uytkownik
moe wpywa na dziaanie aplikacji? Odpowiedzi na tego typu pytania udziela si przez
stworzenie projektu.

Lista wymaga
Na tym etapie konieczna jest wsppraca z uytkownikiem. Twrca oprogramowania i uytkownik musz ustali, w jaki sposb aplikacja bdzie wykorzystywana. W tym przypadku
wymagania s nastpujce:

1. Tworzony system ma wywietla prognozy na cay tydzie.


2. Pokazywana bdzie prognoza na kolejny dzie.
3. Obliczane i prezentowane bd prognozy na kolejne godziny.
4. Aplikacja oblicza bdzie dokadno prognozy w oparciu o dane z ostatnich 20 dni.
Tworzenie aplikacji

61

5. Uytkownik ma mie moliwo wprowadzania iloci telefonw dla poszczeglnych


godzin.
6. System powinien wykrywa anomalie i odpowiednio na nie reagowa.
7. Uytkownik bdzie mg wprowadza nowe dane oraz usuwa (poprawia) informacje
ju zawarte w aplikacji.

rdo danych
Dane pochodzi mog z rnych rde. Mona je pobra z bazy danych SQL, strony internetowej utworzonej w jzyku XML lub po prostu wpisa. W omawianej aplikacji uytkownik
wpisywa bdzie dane dotyczce iloci pocze wasnorcznie. Makra napisane w jzyku
VBA kontrolowa bd poprawno danych oraz miejsce ich zapisania. Wpisanie tych samych
informacji bezporednio do arkusza Dane nie zakci jednak dziaania programu.
Rysunek 3.6 pokazuje ukad kolumn w arkuszu Dane. Uytkownik wprowadza bdzie wycznie wartoci w kolumnie Poczenia. Pozostae dane obliczane bd przez sam aplikacj.
Arkusz ten nie zawiera adnych formu, a jego formatowanie nie ma znaczenia.

Rysunek 3.6. Ukad kolumn w arkuszu Dane

Procedura usuwajca ostatni wprowadzony dzie usprawni edycj danych. W celu wyznaczenia innego rda danych wystarczy wprowadzi odpowiednie zmiany w kodzie VBA.
Makrami zajmiemy si w dalszej czci rozdziau.

Prezentacja
Kolejny krok to okrelenie sposobu prezentowania danych. Rozway naley trzy czynniki.
Po pierwsze, najwaniejsze na tym etapie s elementy informacji. S one prezentowane jako
bloki powizanych danych. Obszar wywietlajcy prognoz na poszczeglne dni danego tygodnia to jeden z takich elementw, innym przykadem moe by wykres prognoz godzinnych. Formuy i obliczenia w obszarze roboczym zalee bd od zawartoci i ukadu tych
elementw.
Istotne jest rwnie rozmieszczenie wspomnianych elementw. Te, ktre s wzajemnie powizane, powinny si wzajemnie wspiera. Najwaniejsze z nich naley umieci w widocznych
miejscach. Ostatni z omawianych czynnikw to formatowanie. Najlepszym rozwizaniem jest

62

Rozdzia 3. Prognozowanie obcienia prac

prosta kolorystyka, podkrelajca zawarto poszczeglnych elementw. Rozmieszczenie i kolorystyk atwo zmieni.
Na rysunku 3.7 widoczny jest gwny arkusz aplikacji, ktry spenia funkcj podobn do strony
gwnej witryny internetowej, co pomaga uytkownikowi zrozumie jej dziaanie. Dziki temu wie on, czego moe si po niej spodziewa i jak si ni posugiwa. Obszary wywietlajce dane maj wygld typowy dla programu Excel, co sprawia, e wycznie prezentowane
informacje przedstawiane s czarno na biaym. Nagwki i etykiety maj znacznie mniejszy
kontrast, co pozwala pooy wikszy nacisk na wywietlane dane.

Rysunek 3.7. Gwne okno aplikacji

Obszar po lewej stronie oddzielony jest za pomoc innego koloru ta. Zawiera przyciski do
nawigacji i informacje podsumowujce. W gwnej czci okna widoczne s szczegowe
prognozy.
Kolorystyka prezentacji opiera si na barwach czarnej, szarej oraz biaej. Zbyt dua ilo kolorw mogaby stanowi problem, ludzie bowiem lepiej rozrniaj jasne i ciemne odcienie
ni poszczeglne kolory; pewne poczenia barw powoduj te zmczenie oczu, a niektrzy
spord uytkownikw mog by daltonistami. Wiadomoci wyrnione za pomoc kolorw
mog rwnie zosta utracone podczas druku.
Prezentowane informacje pobierane s z obszaru roboczego za pomoc odwoa do nazwanych komrek i ich zakresw. Ma to kilka zalet: atwo dziki temu zmieni sposb wywietlania danych, obszary arkusza mona wycina i wkleja w dowolnym miejscu, zachowuje to
rwnie organizacj aplikacji. Omawiany arkusz nie zawiera oblicze, a jedynie formatowanie.
Aplikacj uzupeniaj dwa dodatkowe arkusze wywietlajce dane: wykres dokadnoci prognoz z ostatnich dwudziestu dni oraz tabel z prognozami godzinnymi na cay tydzie. Nie
ma na nie miejsca w gwnym oknie aplikacji, umieszczone wic zostay w osobnych arkuszach. Prezentowane w nich dane rwnie pochodz z obszaru roboczego.
Tworzenie aplikacji

63

Wykres dokadnoci prognoz widoczny jest na rysunku 3.8.

Rysunek 3.8. Wykres dokadnoci

Prognozy na poszczeglne godziny przedstawiono na rysunku 3.9.

Rysunek 3.9. Prognozy godzinne

Konwencje i nazwy
Omawiana aplikacja jest zoona. Nadanie nazw wanym wartociom upraszcza formuy i uatwia jej zrozumienie, a take rozwizywanie problemw i poprawianie oblicze. Innym sposobem kontrolowania zachodzcych w programie procesw jest zastosowanie jasno zdefinio64

Rozdzia 3. Prognozowanie obcienia prac

wanych konwencji w obszarze roboczym. Zastosowaem tu kilka prostych zasad: informacje


pochodzce z arkusza Dane zapisane s niebiesk czcionk; dane wywietlane w arkuszach
Prognoza, Wykres i Godziny umieszczane s na szarym tle; na niebieskim tle widoczne s informacje, ktre przechowywane bd w arkuszu Dane; komrki zawierajce obliczenia maj
pogrubione kontury; wartoci wykorzystywane w innych obliczeniach i makrach umieszczone s w kolumnie A i maj odpowiednie nazwy.

Nazwy wartoci i zakresw w arkuszu Ustawienia


Przedstawiony na rysunku 3.10 arkusz Ustawienia zawiera opcje, ktre uytkownik moe
zmienia.

Rysunek 3.10. Arkusz Ustawienia

W aplikacji zastosowano nazwane komrki i ich zakresy celem wyodrbnienia interfejsw


midzy arkuszami. Nazwy wspomnianych komrek i zakresw zdefiniowane s w arkuszu
Ustawienia.
Nagwek (B1)
Wpisany w tym polu nagwek wywietlony zostanie u gry arkusza Prognoza.
Dugo cyklu (B2)
Nazwa komrki wyjania wszystko. W tym przypadku bazujemy na 5-dniowym tygodniu
roboczym, wic dugo cyklu wynosi 5. Aplikacja wykorzystywa moe dowoln warto
midzy 2 a 7.
Badana warto (B3)
Tu wpisa naley nazw prognozowanej wartoci. W naszym przypadku jest to ilo pocze telefonicznych, ale w zalenoci od wykonywanej pracy moe to by ilo wystawianych rachunkw, zamwie, sprzedanych samochodw lub inny dowolny parametr.
Wpisana nazwa wykorzystywana jest w nagwkach i etykietach.
Poziom ufnoci (B4)
Poziom ufnoci okrela prawdopodobiestwo wykorzystywane przy okrelaniu zakresu
dopasowanej prognozy.
Wykrywalno anomalii (B5)
Aplikacja oblicza prawdopodobiestwo, z jakim rzeczywista warto badanej zmiennej na
dany dzie jest anomali. Wpisana w tym polu warto jest wykorzystywana podczas podejmowania decyzji o ewentualnym zignorowaniu danego pomiaru.
Tworzenie aplikacji

65

Rozkad na poszczeglne godziny (E2:K12)


Obszar ten zawiera oczekiwany rozkad pracy dla kolejnych dni. Wykorzystuje 11-godzinny
dzie pracy, jednak podzia ten mona dowolnie zmienia. Dla kadego dnia okrelono,
jaki procent telefonw obsuono w cigu poszczeglnych godzin. Obliczenia te oparte s
na danych z ostatnich kilku tygodni. Rozkad opisany w tej tabeli wykorzystywany jest
podczas tworzenia prognozy na kolejne godziny.
Przedziay (D2:D12)
Kolumna ta zawiera etykiety elementw tabeli Rozkad na poszczeglne godziny. W przypadku naszych danych s to oznaczenia kolejnych godzin.

Nazwy wartoci w obszarze roboczym


Pierwsza cz obszaru roboczego widoczna jest na rysunku 3.11.

Rysunek 3.11. Obszar roboczy

W tym arkuszu zawarte s wszystkie obliczenia. Nazwy wykorzystywanych wartoci opisano w tabeli 3.3.

Zakresy komrek w obszarze roboczym


W tej czci rozdziau skoncentrujemy si na nazwanych zakresach komrek w obszarze roboczym. Kady z nich odpowiada za dane i obliczenia zwizane z pojedynczym aspektem
tworzonej prognozy. Organizuj one rwnie dane w sposb uatwiajcy ich pniejsz prezentacj w arkuszu Prognoza.
Omawiana cz obszaru roboczego pokazana jest na rysunku 3.12.

66

Rozdzia 3. Prognozowanie obcienia prac

Tabela 3.3. Opisy wartoci wykorzystywanych w obszarze roboczym


Nazwa wartoci

Formua

Opis

Last_Row

(A2)

{=MAX((WIERSZ(Dane!B1:
B2000)*(Dane!B1:B2000<>
"")))}

Formua ta oblicza numer ostatniego wiersza


wykorzystywanego w arkuszu Dane. Jest to formua
tablicowa mnoca numery wierszy przez warto logiczn
(1 albo 0). Warto ta wynosi 0, jeli komrka w danym
wierszu jest pusta. Wynik oblicze wykorzystywany jest
do okrelenia numeru wiersza, do ktrego maj by
wprowadzone nowe dane.

MyTop

=Last_Row-56

Obliczenia wymagaj danych z 56 dni. Ta warto wyznacza


numer wiersza w arkuszu Dane, znajdujcego si tu nad
pierwszym z wierszy wykorzystywanych w obliczeniach.
W ten sposb formua wykorzystujca t warto moe
zosta wprowadzona do znajdujcych si poniej komrek
przez przecignicie. Opisywany parametr umoliwia
kontrolowanie numerw wierszy zawierajcych dane
przesyane z arkusza Dane do obszaru roboczego.

=DZIE.TYG(C56)

W arkuszu ObszarRoboczy daty skopiowane z arkusza Dane


umieszczone s w kolumnie C. Poniewa wykorzystujemy
dane z 56 dni, ostatni wprowadzony dzie znajdowa si
bdzie w komrce C56. Formua zwraca dzie tygodnia
odpowiadajcy ostatniemu wpisowi. Aplikacja wywietla
prognozy na biecy i nastpny tydzie. W tym celu
konieczne jest zlokalizowanie wiersza zawierajcego dane
z pierwszego dnia roboczego tygodnia. Wynik opisywanej
formuy jest wykorzystywany w przeprowadzanych w tym
celu obliczeniach oraz podczas prezentowania informacji.

=DZIE.TYG(C57)

Poniewa ostatni wprowadzony dzie znajduje si


w komrce C56, nastpny bdzie wprowadzony do komrki
C57. Jej wynik posuy do obliczenia pierwszego dnia
biecego tygodnia.

=57-((TomorrowFirstWorkDay))

Formua okrela wiersz obszaru roboczego odpowiadajcy


pocztkowi biecego tygodnia. Wynik jej dziaania
wykorzystywany jest w obliczeniach bazujcych na danych
w ujciu tygodniowym.

{=MIN(DZIE.TYG(
C49:C56))}

W omawianym przykadzie tydzie roboczy rozpoczyna


si w poniedziaek. Teoretycznie jednak moe si on
rozpoczyna dowolnego dnia. Aplikacja wykorzystuje
minimaln warto funkcji DZIE.TYG z omiu dni celem
okrelenia pierwszego dnia roboczego w tygodniu. Wynik
jest rwnie wykorzystywany podczas okrelania pocztku
biecego tygodnia.

{=UFNO(1-Confidence_
Level;ODCH.STANDARDOWE(
G37:G56-D37:D56);20)}

Tu definiowany jest przedzia ufnoci dla dopasowanej


prognozy. Wykorzystywana jest formua tablicowa.
Kolumna G zawiera dopasowane prognozy, a kolumna
D wartoci rzeczywiste. Rozmiar prby wynosi 20.
Confidence_Level to zmienna okrelana w arkuszu
Ustawienia (Poziom ufnoci). Interval to element
wykorzystywany podczas wywietlania danych.

(A4)

DayofWeek

(A6)

Tomorrow

(A8)

StartofWeek

(A11)

FirstWorkDay

(A13)

Interval

(A17)

Tworzenie aplikacji

67

Tabela 3.3. Opisy wartoci wykorzystywanych w obszarze roboczym (cig dalszy)


Nazwa wartoci

Formua

Opis

CurrentHour

{=JEELI(SUMA(T48:T58)
<1;0;MAX((T48:T58>0)
*WIERSZ(T48:T58)))}

Po wpisaniu wartoci rzeczywistych dla poszczeglnych


godzin s one czone z kolumn T w obszarze roboczym.
Aplikacja wykorzystuje je podczas dopasowywania
prognozy w trakcie dnia. Opisywana zmienna pomaga
ledzi kolejne wpisy, okrelajc ostatni godzin, dla ktrej
wpisano warto rzeczywist.

=JEELI(CurrentHour=0;1
;ADR.POR("u"&A22)/
ADR.POR("v"&A22))

Ta formua porwnuje warto oczekiwan z wartoci


rzeczywist danego dnia (zmierzon do aktualnej godziny).
Okrela, czy badany parametr jest (jak dotd) wysoki, czy
niski i jak bardzo odchyla si od normy. Wynik tych oblicze
wykorzystywany jest podczas dopasowywania prognoz na
kolejne godziny.

=ZAOKR.DO.CAK((SUMA(
I1:I8)-(MAX(I1:I8)
+MIN(I1:I8)))/6)

W tej komrce obliczana jest prognoza tygodniowa


filtrowana rednia. Oparta jest na obliczeniach
przeprowadzanych w znajdujcym si powyej obszarze
(I1:I8), zawierajcym wartoci rzeczywiste dla aktualnego
dnia tygodnia, zmierzone w cigu ostatnich dwch miesicy.
Obliczona warto jest kopiowana do kolumny D arkusza
Dane po wpisaniu nowych danych.

=JEELI(L42>=Anomaly_
Detection;1;0)

Tu wyznaczany jest znacznik anomalii dla biecej wartoci


rzeczywistej. Jest on wynikiem oblicze przeprowadzanych
w znajdujcym si powyej obszarze (L38:L42). Zmienna
Anomaly_Detection ustalana jest przez uytkownika
w arkuszu Ustawienia (Wykrywalno anomalii). Wynik
dziaania formuy kopiowany jest do kolumny A w arkuszu
Dane.

=JEELI(F56=0;"";F57
*((1+(E56/F56))/2))

Formua oblicza dopasowan prognoz na dany dzie.


Prognoza tygodniowa dla tego dnia (F57) mnoona jest
przez poow obliczonej dla poprzedniego dnia proporcji
bdu. Wynik oblicze kopiowany jest do kolumny E
w arkuszu Dane.

(A22)

CurrentRatio

(A24)

Prediction

(I9)

Anomaly

(L43)

AdjustedPrediction

(G57)

Rysunek 3.12. Ten tydzie i Nastpny tydzie

68

Rozdzia 3. Prognozowanie obcienia prac

ThisWeek (M3:Q9)
Ten obszar zawiera nazwy dni tygodnia, daty, prognozy tygodniowe, dopasowane prognozy oraz wartoci rzeczywiste dla kadego dnia biecego tygodnia. Obszar w kolumnie
L zawiera oznaczenia dni roboczych. Podstawowa formua wykorzystywana w tabeli to:
=JEELI(L3=1;ADR.POR("ObszarRoboczy!c" & StartofWeek + WIERSZ(A1)-1);"").
Odniesienie do komrki tworzone jest za pomoc funkcji ADR.POR. Rozpoczyna si od
wskazania kolumny C w arkuszu obszaru roboczego. Wykorzystuje zmienn StartofWeek
oraz numer wiersza w celu zlokalizowania odpowiedniego rekordu. Formu przecignito do znajdujcych si poniej komrek. Dane pobierane s z kolumn C, F, G oraz D. Formua w kolumnie M, =JEELI(L3=1;TEKST(DZIE.TYG(N3);"dddd");""), okrela nazw
dnia tygodnia. Funkcja DZIE.TYG zwraca numer, a funkcja TEKST przekada go na nazw przypisanego mu dnia.
NextWeek (N15:Q21)
Ten obszar zawiera daty oraz prognozy na kolejny tydzie. Wykorzystywane s w nim
te same techniki co w tabeli ThisWeek. Podstawowa formua to =JEELI(L3=1;ADR.POR
("ObszarRoboczy!c" & Lag + StartofWeek + WIERSZ(A1)-1);""). Rnica polega na
tym, i w tym przypadku do zmiennej StartofWeek dodawana jest zmienna Lag.
HourlyNextWeek (Z20:AG31)
Tu obliczane s prognozy na kolejne godziny dla caego tygodnia. Wynik oblicze wywietlany jest w arkuszu Godziny. Obliczenia wykonywane w komrkach po lewej stronie
wykorzystuj wartoci zapisane w obszarze HourlyDist w arkuszu Ustawienia. Liczby z zakresu S20:Y20 to tygodniowe prognozy dla kadego z 7 dni aktualnego tygodnia. W celu
obliczenia prognozy na okrelon godzin prognoza na dany dzie jest mnoona przez
wartoci rozkadu dla poszczeglnych godzin.
Rysunek 3.13 przedstawia tabel Godzinne prognozy nastpny tydzie, umieszczon w obszarze roboczym. Komrki wypenione szarym tem to opisany wyej zakres nazwany HourlyNextWeek.

Rysunek 3.13. Godzinne prognozy nastpny tydzie

Hours (R48:S58)
W tym zakresie komrek podane s kolejne godziny i przypisane do nich prognozy. Cao
dziaa na takiej samej zasadzie jak HourlyNextWeek, z tym e obliczenia ograniczone s do
aktualnego dnia. Do przeprowadzenia tych oblicze konieczne jest odszukanie waciwej
kolumny w arkuszu Ustawienia. Wykorzystywana formua brzmi =ADR.POR("Ustawienia!
" & ADRES(WIERSZ(A2);DayofWeek+4)). Arkusz docelowy to Ustawienia, ale w obliczeniach
uwzgldniany jest zarwno wiersz, jak i kolumna. Zagniedona w funkcji ADR.POR
funkcja ADRES zapewnia elastyczno odczytywania danych z dowolnego wiersza lub

Tworzenie aplikacji

69

kolumny. Zmienna DayofWeek zwikszana jest o 4, poniewa rozkad dla kolejnych godzin zapisywany jest od pitej kolumny arkusza Ustawienia.
AdjustedHourly (W48:W58)
Ten obszar zawiera dopasowane prognozy na kolejne godziny aktualnego dnia. Wykorzystuje dane z obszaru Hours w celu utworzenia tabeli prognoz godzinnych w arkuszu
Prognoza. Podane przez uytkownika wartoci rzeczywiste wprowadzane s do kolumny
T. Oglna liczba pocze danego dnia przedstawiana jest narastajco w kolumnie U, natomiast w kolumnie V ta sama operacja wykonywana jest dla wartoci prognozowanych
z kolumny S. Zmienna CurrentRatio (A24) to suma wprowadzonych wartoci podzielona przez warto oczekiwan dla tego samego okresu. Dopasowanie prognoz dla kolejnych
godzin uzyskiwane jest w wyniku mnoenia ich przez t zmienn.
Rysunek 3.14 przedstawia cz obszaru roboczego odpowiedzialn za obliczenia zwizane
z prognozami na okrelone godziny.

Rysunek 3.14. Godziny (zakres Hours) i Dopasowanie (zakres AdjustedHourly)

Weekly (H60:H63)
Formuy w komrkach tego zakresu obliczaj redni bd prognozy tygodniowej oraz procent bdw w cigu ostatnich 20 dni. Wyznaczona jest tu rwnie rednia dzienna ilo
telefonw za ten sam okres.
NextDay (H67:H75)
Obszar ten zawiera sumaryczne informacje na temat aktualnego dnia: dopasowan prognoz, przedzia ufnoci, prawdopodobiestwo anomalii oraz ostatni dopasowan prognoz opart na wartociach rzeczywistych z poszczeglnych godzin.
Adjusted (J60:J61)
Tu obliczany jest redni bd dla ostatnich 20 dni, a take procentowa warto bdw dla
prognozy dopasowanej.
Omawiane elementy obszaru roboczego przedstawione s na rysunku 3.15.

Inne wane cza w obszarze roboczym


(C37:D56) & (F37:G56)
Podane zakresy zawieraj dane wykorzystywane przez wykres dokadnoci i pochodz
z arkusza Dane.

70

Rozdzia 3. Prognozowanie obcienia prac

Rysunek 3.15. Zakresy komrek i cza w obszarze roboczym

(T48:T58)
Obszar ten poczony jest z komrkami H7:H17 w arkuszu Prognoza. Tutaj uytkownik
wpisuje wartoci rzeczywiste dla okrelonych godzin. Na podstawie tych danych przeprowadzane s obliczenia dopasowujce prognozy dla kolejnych godzin.

Tworzenie cz do danych
Wiemy ju, jaka jest funkcja obszaru roboczego. Teraz naley opracowa odpowiednie formuy do obsugi danych. W pierwszej kolejnoci musimy poczy z obszarem roboczym informacje z arkusza Dane. Aby umoliwi obsug wszystkich moliwych dugoci cyklu oraz
dni tygodnia, wykorzystamy funkcj ADR.POR. W obliczeniach wykorzystywane s informacje z ostatnich 2 miesicy, a w kadym tygodniu moe by maksymalnie 7 dni roboczych,
tak wic minimalna ilo danych obejmowa musi 56 dni.
Znajdujca si w obszarze roboczym komrka o nazwie Last_Row zawiera numer wiersza,
w ktrym zawarte s ostatnie wykorzystywane dane z arkusza Dane. Aplikacja powinna pobiera je, zaczynajc od wpisu znajdujcego si 55 wierszy powyej ostatniego. Zmienna MyTop
w obszarze roboczym przechowuje numer wiersza, poniej ktrego zaczyna si zakres danych do pobrania. Pocztek zakresu pobranych danych w arkuszu ObszarRoboczy znajduje si
w komrce B1. Wykorzystywana formua to =ADR.POR("Dane!a" & MyTop + WIERSZ(A1)).
Odwouje si ona do kolumny A w arkuszu Dane. Zmienna MyTop wskazuje komrk umieszczon tu nad pierwsz komrk zakresu wykorzystywanych danych, dziki temu formu
mona kopiowa do komrek znajdujcych si poniej. Do wspomnianej zmiennej dodawany
jest wynik dziaania funkcji WIERSZ(A1). Dla argumentu A1 wynosi on 1, jednak w miar

Tworzenie aplikacji

71

kopiowania formuy do kolejnych komrek argument zmienia si na A2, A3 itd., co sprawia,


e dla kadej wartoci wyznaczany jest waciwy wiersz. Tak samo wykonywane s obliczenia w kolumnach C i D. Wszystkie opisywane kolumny wypeniane s do wiersza 56.
Kolumna E odpowiada za anomalie. Jeli w kolumnie B znajduje si znacznik anomalii, warto rzeczywista na dany dzie jest ignorowana, a zamiast niej w obliczeniach wykorzystywana jest warto sprzed tygodnia. Formua brzmi =JEELI(B1=0;D1;ADR.POR("Dane!c" &
(MyTop + WIERSZ(A1)-Lag))). Jest ona rwnie kopiowana a do wiersza 56. Obliczona warto wykorzystywana jest podczas tworzenia prognozy.
Prognozy z ostatnich 20 dni wykorzystywane s w kilku obliczeniach oraz podczas tworzenia
wykresu, naley je zatem umieci w obszarze roboczym. Prognozy tygodniowe znajduj si
w zakresie F37:F63, a ich dopasowane odpowiedniki w zakresie G37:G57. W komrkach
tych zastosowane zostay te same formuy co w kolumnach B, C oraz D, odwouj si one
jednak do innej kolumny w arkuszu Dane. Prognozy tygodniowe w kolumnie F cign si do
wiersza 63, poniewa przewidujemy wartoci badanego parametru na tydzie naprzd.
Opisane formuy cz obszar roboczy z arkuszem Dane. Po wprowadzeniu nowych do tego
arkusza nowych informacji obszar roboczy zostaje automatycznie uaktualniony i wszystkie
obliczone wartoci s gotowe do wykorzystania.

Visual Basic
Nasza aplikacja wykorzystuje jzyk Visual Basic dla Aplikacji (VBA ang. Visual Basic for
Applications). To narzdzie o ogromnym potencjale, ktre czsto bywa naduywane. Generalnie rzecz biorc, najlepiej wykonywa jak najwiksz cz pracy, uywajc skoroszytw,
a VBA wykorzystywa wycznie w przypadkach wykraczajcych poza moliwoci Excela.
Kod zawarty w module Module1 (domylna nazwa moduu przypisywanego arkuszowi) wywietli mona za pomoc edytora Visual Basic. Aby go otworzy, naley wybra polecenie
Edytor Visual Basic z menu Narzdzia/Makro lub nacisn skrt klawiszowy Alt+F11.
VBA nie jest niezbdny do dziaania aplikacji. Najbardziej zoona z wykonywanych przez
niego operacji to dodanie danych dla kolejnego dnia, a to mona zrobi take rcznie, otwierajc arkusz Dane i wpisujc wartoci w odpowiednim miejscu. W omawianym przykadzie
Visual Basic wykorzystany zosta do realizacji trzech zada.
Po pierwsze do obsugi przyciskw pozwalajcych na nawigacj midzy arkuszami. Przenosz one uytkownika do wybranych arkuszy i ustawiaj widok w ich lewym grnym rogu.
Dziaaj one na takiej samej zasadzie jak zakadki arkusza, ale daj wiksz elastyczno w zakresie zabezpieczania aplikacji oraz zwikszaj jej wewntrzn spjno. Fragment kodu odpowiedzialny za nawigacj wyglda nastpujco:
Sub AccuracyChart()
'*******************
' Nawigacja
' To makro przenosi uytkownika do
' arkusza Wykres i zaznacza
' komrk A1
'*******************
Sheets("Wykres").Select
Range("A1").Select
End Sub

72

Rozdzia 3. Prognozowanie obcienia prac

Powyszy kod wykonuje tylko dwie operacje: otwiera wskazany arkusz i zaznacza komrk A1.
Nastpn funkcj makra jest dodawanie danych dla kolejnego dnia do arkusza Dane. atwo
mona zmodyfikowa kod tak, aby aplikacja pobieraa je z bazy danych SQL. Zmiennej NewActual mona przypisa warto za pomoc dowolnej metody. Cao wyglda, by moe,
bardzo zawile, ale w rzeczywistoci wykonywane operacje sprowadzaj si wycznie do przenoszenia danych. Wszystkie obliczenia wykonywane s w Excelu.
Sub AddDay()
'*****************************************
' To makro pozwala uytkownikowi
' wpisa wartoci rzeczywiste dla kolejnego dnia
' Wpis zostaje sprawdzony i jeli
' jest poprawny nowe dane zostaj wpisane
' do arkusza Dane
'******************************************
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim

myItem As String
myDate As Date
NewActual As Variant
NextRow As Integer
Anomaly As Double
Prediction As Integer
AdjustedPrediction As Integer
TheLag As Integer

myItem = Range("Item").Value
' Odczytanie elementu z arkusza Ustawienia
myDate = Range("ObszarRoboczy!c57").Value ' Pobranie nastpnej daty
' Uytkownik wprowadza kolejn warto rzeczywist za pomoc okna dialogowego
NewActual = InputBox("Podaj " & LCase(myItem) & _
" w dniu " & myDate & ".", "Wpisywanie wartoci rzeczywistej", 0)
If NewActual = "0" Or NewActual = "" Then Exit Sub ' Jeli uytkownik zrezygnuje lub
' nie wprowadzi danych
If Not IsNumeric(NewActual) Then
' Czy wprowadzona warto to liczba?
MsgBox ("Naley poda warto liczbow.") ' Jeli nie, wywietlony zostaje komunikat
Exit Sub
' i operacja zostaje przerwana
End If
If Val(NewActual) < 0 Then
MsgBox ("Warto nie moe by ujemna.")
Exit Sub
End If

' Czy warto jest mniejsza od 0?

If CDbl(NewActual) <> Int(CDbl(NewActual)) Then


MsgBox ("Warto musi by cakowita.")
Exit Sub
End If
NextRow = Range("Last_row").Value + 1

' Czy warto jest cakowita?

' Okrelanie numeru kolejnego wiersza


' w arkuszu Dane

Range("Dane!b" & NextRow).Value = myDate

' nowa data jest umieszczana w arkuszu

Range("Dane!c" & NextRow).Value = NewActual ' nowa warto rzeczywista


' jest umieszczana w arkuszu
TheLag = Range("Lag").Value

' z arkusza Ustawienia pobrana zostaje dugo cyklu

Tworzenie aplikacji

73

Prediction = Range("Preditction").Value ' Prognoza zostaje zaktualizowana po


' wprowadzeniu nowych danych do arkusza Dane
Anomaly = Range("Anomaly").Value

' Dane dotyczce anomalii rwnie zostaj zaktualizowane

' Dane dotyczce anomalii umieszczane s w arkuszu Dane,


' poniewa wykorzystywane s podczas obliczania
' dopasowanej prognozy
Range("Dane!a" & NextRow).Value = Anomaly
AdjustedPrediction = Range("AdjustedPrediction").Value ' pobranie wartoci dopasowanej prognozy
' tygodniowa prognoza umieszczana jest o jedn dugo cyklu poniej aktualnego dnia
Range("Dane!d" & NextRow + TheLag).Value = Prediction
' dopasowana prognoza umieszczana jest w kolejnym wierszu
Range("Dane!e" & NextRow + 1).Value = AdjustedPrediction
' czyszczenie obszaru zawierajcego godzinne wartoci rzeczywiste
Range("h7:h17").ClearContents
Range("a1").Select ' Zaznaczenie komrki A1
End Sub

Ostatnie makro pozwala uytkownikowi usun dane dotyczce ostatniego dnia. Umoliwia
to edycj danych zawartych w arkuszu. Przedstawione poniej makro odnajduje komrki zapenione podczas ostatniej operacji wprowadzania danych, zaznacza je i czyci ich zawarto.
Sub DeleteDay()
'*******************************************
' To makro usuwa dane o ostatnim dniu.
' Wystarczy w tym celu usun odpowiednie wpisy
' w arkuszu Dane
'********************************************
Dim LastRow As Integer
Dim TheLag As Integer
LastRow = Range("Last_Row").Value

Sheets("dane").Select

' Najpierw naley zlokalizowa


' ostatni wiersz. Jego numer
' zawarty jest w osobnej komrce
' w arkuszu ObszarRoboczy
' Ta deklaracja przechowuje numer
' ostatniego wiersza w zmiennej
' o nazwie LastRow

' Wszystkie dane, ktre naley skasowa, znajduj si


' w arkuszu Dane. Zaczniemy wic od zaznaczenia
' tego arkusza

' Dane znajduj si w kolumnach A-E. Musimy jedynie zaznaczy


' odpowiednie komrki i skasowa ich zawarto.
' W przypadku kolumn A, B i C dane,
' ktre maj zosta skasowane, zawarte s
' w wierszu o numerze przechowywanym w zmiennej LastRow.
' Moemy wic zaznaczy wszystkie trzy komrki naraz
' i usun jednoczenie ich zawarto.
' Na przykad, jeli zmienna LastRow ma warto
' 75, to funkcja uruchomiona zostanie z parametrem
' Dane!a75:c75

74

Rozdzia 3. Prognozowanie obcienia prac

Range("Dane!a" & LastRow & ":c" & LastRow).ClearContents


TheLag = Range("Lag")

' Aby okreli wiersz zawierajcy ostatni


' prognoz tygodniow, musimy zna dugo
' cyklu. Warto ta jest umieszczona w odpowiednio
' nazwanej komrce w arkuszu Ustawienia

' Ta sekcja usuwa ostatni prognoz tygodniow.


'Znajduje si ona o jedn dugo cyklu
' poniej LastRow.
Range("Dane!d" & LastRow + TheLag).ClearContents
' Ostatnia dopasowana prognoza znajduje si tu pod
' wierszem o numerze zapisanym w zmiennej LastRow
Range("Dane!e" & LastRow + 1).ClearContents
Sheets("Prognoza").Select

' Powrt do arkusza Prognoza

Range("h7:h17").ClearContents

' Czyszczenie obszaru zawierajcego wartoci


' rzeczywiste dla poszczeglnych godzin

Range("a1").Select
End Sub

Obszar pracy i odpowiednie makra s gotowe. Czas przej do tworzenia interfejsu uytkownika.

Formatowanie
Formatowanie w omawianej aplikacji opiera si gwnie na wykorzystaniu te i obramowania.
Jedynie w arkuszu Prognoza zastosowano formatowanie warunkowe. W zakresach G23:J28
oraz M23:N28 ilo wierszy zawierajcych dane zalena jest od iloci dni roboczych w tygodniu z tego wzgldu konieczne jest wykorzystanie formatowania warunkowego celem
wywietlania lub dodawania szarego ta do odpowiednich komrek w zalenoci od tego
czy s one wykorzystywane, czy nie.
Arkusz prezentujcy prognozy na kolejne godziny przedstawiony jest na rysunku 3.16. Zastosowano w nim rne obramowania i desenie.
By moe formatowanie zastosowane w tym arkuszu jest nieco przesadzone, spenia jednak
swoj funkcj i pomaga uytkownikowi odnale poszukiwane informacje.

Uruchamianie aplikacji
Aplikacja napisana zostaa w Excelu 2002 i nie wykorzystuje dodatkowego oprogramowania.
Po otwarciu jej w Excelu 95 mog wystpi pewne problemy w zakresie formatowania, jednak
wszystkie obliczenia wykonywane s poprawnie.
Na pocztek otwieramy aplikacj i wybieramy zakadk Prognoza. W znajdujcym si po lewej stronie obszarze Kolejny dzie warto w polu Prognoza wynosi 11 072. Jest to dopasowana
prognoza na aktualny dzie. Prognozy na pierwsze 3 godziny wynosz 392, 839 oraz 1134.

Tworzenie aplikacji

75

Rysunek 3.16. Arkusz Godziny

Zamy, e wartoci rzeczywiste zanotowane w tych godzinach to 500, 1000 oraz 1300. Na
rysunku 3.17 (element 1) wartoci te zostay wprowadzone w odpowiednie pola. Znajdujcy
si obok wykres wskazuje teraz, i wartoci rzeczywiste s wysze od prognozowanych (element 2). Jeli w cigu pierwszych 3 godzin zanotowano wiksz (w tym przypadku o mniej
wicej 18%) od spodziewanej ilo pocze, to mona oczekiwa, i tendencja ta utrzyma si
do koca dnia. Warto Obecne dopasow. wzrosa do 13 103. Zwikszone zostay rwnie prognozy na kolejne godziny w obszarze Prognoza godzinna.
Cao przedstawiona zostaa na rysunku 3.17.

Rysunek 3.17. Wykorzystywanie arkusza Prognoza

76

Rozdzia 3. Prognozowanie obcienia prac

Aktualny dzie to pitek 1998-08-07. Data ta widnieje w obszarze Kolejny dzie, znajdujcym
si po lewej stronie. W tabeli Obecny tydzie wywietlone s pene dane dla aktualnego tygodnia. Element 3 wskazuje dane dla obecnego dnia. Komrki w kolumnach Prognoza i Dopasow. wypenione s wartociami prognozowanymi. Komrka w kolumnie WR jest pusta, poniewa dzie jeszcze si nie zakoczy. Prognoza na przyszy tydzie (element 4) nie zostaa
na razie obliczona, poniewa nie mamy jeszcze niezbdnych do jej obliczenia danych z obecnego dnia.
Klikajc przycisk Prognoza godzinna, obejrze moemy prognozy na kolejne godziny dla obecnego tygodnia. Przycisk Wykres dokadnoci wywietla wykres wartoci przewidywanych na
kolejny tydzie, ich dopasowanych odpowiednikw oraz wartoci rzeczywistych z ostatnich
20 dni.
Przykadowe dane kocz si na dniu 1998-08-06. Wartoci na kolejne dni nastpnego tygodnia wynosz:
10
14
14
13
11

864
711
997
255
972

Klikamy przycisk Nowy dzie i wpisujemy warto 10 864. Wywietlane dane zostan automatycznie zaktualizowane. Cao widoczna jest na rysunku 3.18.

Rysunek 3.18. Kolejny dzie

Aktualny dzie roboczy to poniedziaek 1998-08-10, w zwizku z czym wszystkie obszary arkusza ustawione zostay na pocztek nowego tygodnia. Przycisk Usu dzie spowoduje usunicie z aplikacji ostatnio wprowadzonych danych. Mona go wykorzysta w celu skasowania niepoprawnej wartoci lub powrotu do poprzedniego dnia.
Tworzenie aplikacji

77

Naley pamita, e omawiana aplikacja to tylko skoroszyt Excela. Wprowadzone dane naley zatem zapisywa tak samo jak w kadym innym arkuszu tego programu.

Dopasowywanie aplikacji do wasnych potrzeb


W celu wykorzystania aplikacji do obrbki wasnych danych, naley wyczyci arkusz Dane
i wklei 56 rekordw zawierajcych okrelone daty oraz przypisane im wartoci do kolumn
B i C, poczynajc od wiersza 2. W wierszu 1 umieszczone s nagwki. Nastpnie w arkuszu
Ustawienia wpisujemy odpowiednie dla naszych potrzeb wartoci w polach Nagwek, Dugo
cyklu, Badana warto, Poziom ufnoci oraz Wykrywalno anomalii. Aby uzyska ilo informacji
niezbdnych do dziaania wszystkich narzdzi, konieczne jest wprowadzenie danych z jeszcze jednego penego cyklu. Mona to zrobi, uywajc makra AddDay lub po prostu wpisa
wartoci bezporednio do arkusza Dane.
Aplikacja jest samowystarczalna i nie potrzebuje adnego dodatkowego oprogramowania poza
Excelem. W dalszej czci ksiki zajmiemy si bardziej zaawansowanymi technikami prognozowania, ktre mogyby zosta zastosowane w omawianym projekcie poprzez wprowadzenie
odpowiednich zmian w obszarze roboczym. Ulepsze dokona mona na wiele sposobw:
Tworzc nowy arkusz i dodajc nieco oblicze w obszarze roboczym, uwzgldni mona

dane dotyczce zatrudnianego personelu. W arkuszu Ustawienia mona nastpnie wprowadza ilo jednostek pracy na dzie. Warto ta zostaaby z kolei wykorzystana do obliczania wymaganej iloci pracownikw.
Makro AddDay mona ulepszy tak, aby aktualizowao zakres komrek Rozkad na po-

szczeglne godziny, umieszczony w arkuszu Ustawienia. W ten sposb oczekiwany rozkad


pracy na kolejne godziny byby zawsze aktualny.
Wykres dokadnoci mgby zosta zastpiony wykresem przestawnym, umoliwiajcym

bardziej precyzyjn analiz dokadnoci prognozowania.


Ulepszy mona formatowanie arkusza Prognoza, a umieszczone w nim elementy zawie-

rajce informacje mogyby zosta przemieszczone za pomoc polece Wytnij i Wklej. Zmiana samych elementw jest bardziej zoona i wymaga ingerencji w obliczenia przeprowadzane w obszarze roboczym.
Kluczem do skutecznego ulepszania aplikacji jest przestrzeganie ustalonych konwencji. Obliczenia powinny pozosta w obrbie obszaru roboczego, nowy rodzaj danych najlepiej umieci w arkuszu Dane, a nowe parametry w arkuszu Ustawienia. Wszystkie wykorzystywane w aplikacji elementy naley te odpowiednio nazwa.

78

Rozdzia 3. Prognozowanie obcienia prac

You might also like