Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
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
Wstp .............................................................................................................................. 7
1. Statystyka w Excelu ....................................................................................................... 11
Formuy tablicowe
Porednie adresowanie komrek
Funkcje statystyczne
11
13
16
34
47
50
54
61
79
83
86
88
93
95
98
102
104
Wygld aplikacji
Dokonywanie zmian w aplikacji
105
115
120
122
123
125
135
142
143
146
163
167
167
171
175
9. Optymalizacja ..............................................................................................................177
Szukaj wyniku
Solver
177
186
201
206
213
219
222
223
228
Spis treci
231
232
232
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
Nadawanie nazw komrkom i ich zakresom pozwala stworzy jasny i przejrzysty interfejs
midzy poszczeglnymi czciami aplikacji.
Formuy tablicowe
Wykresy
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
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
56
57
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.
58
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
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
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:
61
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.
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
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.
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
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
65
W tym arkuszu zawarte s wszystkie obliczenia. Nazwy wykorzystywanych wartoci opisano w tabeli 3.3.
66
Formua
Opis
Last_Row
(A2)
{=MAX((WIERSZ(Dane!B1:
B2000)*(Dane!B1:B2000<>
"")))}
MyTop
=Last_Row-56
=DZIE.TYG(C56)
=DZIE.TYG(C57)
=57-((TomorrowFirstWorkDay))
{=MIN(DZIE.TYG(
C49:C56))}
{=UFNO(1-Confidence_
Level;ODCH.STANDARDOWE(
G37:G56-D37:D56);20)}
(A4)
DayofWeek
(A6)
Tomorrow
(A8)
StartofWeek
(A11)
FirstWorkDay
(A13)
Interval
(A17)
Tworzenie aplikacji
67
Formua
Opis
CurrentHour
{=JEELI(SUMA(T48:T58)
<1;0;MAX((T48:T58>0)
*WIERSZ(T48:T58)))}
=JEELI(CurrentHour=0;1
;ADR.POR("u"&A22)/
ADR.POR("v"&A22))
=ZAOKR.DO.CAK((SUMA(
I1:I8)-(MAX(I1:I8)
+MIN(I1:I8)))/6)
=JEELI(L42>=Anomaly_
Detection;1;0)
=JEELI(F56=0;"";F57
*((1+(E56/F56))/2))
(A22)
CurrentRatio
(A24)
Prediction
(I9)
Anomaly
(L43)
AdjustedPrediction
(G57)
68
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.
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.
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.
70
(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
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
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
Tworzenie aplikacji
73
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
74
Range("h7:h17").ClearContents
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
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.
76
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.
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.
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-
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