|
Microsoft Office Excel |
|
|
Mala varka u Excel izveštajuNivo:
Ponekad stupam u prijateljske čarke sa kolegom Mihaljevim, jer nas dvojica po prirodi Office programa koje najbolje poznajemo različito gledamo na to kad i kako je bolje koristiti Access ili Excel. Dabome, svaki program ima svoje pro et contra, ali uvek je najbitnije to šta zaista predstavlja jezgro vašeg informacionog sistema. Access može da bude platforma za to, pogotovo u manjim firmama. Međutim, jedno nedavno iskustvo me je po ko zna koji put podsetilo da i Excel ima svoje zvezdane trenutke, a to se posebno odnosi na situacije u kojima korisnik zna šta želi da dobije, ali nije vičan manipulaciji bazama, a pogotovo ne ume da programira. U fabrici u kojoj radi moj stari kolega, Excel se koristi veoma aktivno. Temelj informacionog sistema firme čini sveobuhvatni CRM sistem aplikacija koji počiva na SQL Server platformi. Što kroz aplikacije, a što kroz pripremljene SQL upite, službenici su u stanju da generišu razne izveštaje. Ako nemaju gotov obrazac za neke izveštaje, uvek mogu da generišu izvorne sadržaje koje će preinačiti u prikladan izveštaj u Excelu. Liste u Excelu i prateći analitički alati se tamo koriste u punom pogonu, a nije redak slučaj da neke analize stanja iziskuju ažurirane izveštaje i više puta na dan; to je kombinacija koja efikasno pokriva tekuće potrebe. Sve je bilo u redu dok se nije pojavila potreba za nekim novim tipskim izveštajem u kome se uporedno analiziraju tekući periodi sa istim periodom prošle godine (dan, nedelja, mesec). Naizgled, ništa posebno. Međutim, CRM aplikacija eksportuje listu transakcija koje se dešavaju samo tokom pet radnih dana u nedelji; a iz nekog bizarnog razloga koji nikome nije jasan, rukovodilac koji traži izveštaj (i ne pada mu na pamet da ga sam napravi, iako ima resurse za to - ali to je druga priča) insistira i na strogom šablonu koji je negde našao. U tom šablonu, opsezi datuma se tabelarno porede čak i ako radni dan jedne godine bude dan vikenda sledeće. Problem sa kojim mi se kolega obratio glasi: kako je najbolje napraviti neki agregatni izveštaj iz detaljne liste tako da kopiranjem ili povezivanjem (svejedno) bude izveden svaki datum meseca koji se analizira? Video sam uzorke radnih svezaka sa ulaznim podacima i sa šablonom izveštaja; bilo je jasno šta je potrebno. Brže-bolje sam predložio da se formira izvedena (pivot) tabela koja će uvek biti povezana sa listom koja se formira iz spoljnog SQL upita; ako i lista i izvedna tabela uvek stoje na istom mestu, lako bi se osvežavanjem došlo do željene strukture koja bi se na ovaj ili onaj način prenela u šablon uporednog izveštaja. "Tu sam te čekao", reče kolega, "izvedena tabela sadrži samo radne dane." Iskreno, kolega me je zbunio i u prvi mah nisam znao šta da mu odgovorim. Problem je bio razjašnjen kad sam simulirao dalje korake: nema lakog kopiranja u šablon izveštaja, a o povezivanju nema ni govora, jer nije moguće predvideti koji datumi nedostaju. Ne bih dozvolio da kolega pešice kopira po pet radnih dana, sve pazeći da uparuje datume i sam unese nule u redove koji se odnose na subotu i nedelju, jer to bi bilo jednako neefikasno kao "umrežavanje preko kancelarijske stolice", tj. prepisivanje sa ekrana na ekran. Treba nam, dakle, izvedena tabela koja ima sve datume jednog meseca u sebi, a osvežavanje može da funkcioniše bez promene strukture. Rešenje sam našao kroz pet minuta, a spada među najprljavije manevre koje sam u životu napravio u Excelu. No, kolega je bio oduševljen i rekao "to je to". A šta sam to uradio: cela lista ima nekoliko stotina redova sa analitičkim podacima; leva kolona polazne liste sadrži datume. Postavio sam se u prvu ćeliju ispod poslednjeg reda liste, uneo sam prvi datum u istom mesecu, pa sam povukao fill handler nadole dok nisam napravio poslednji datum u mesecu. Ponovo sam generisao izvedenu tabelu, ovog puta definišući oko dve hiljade redova (pazio sam da bude pristojno više od najvećeg realno očekivanog broja redova u praksi). U polje za redove sam smestio datume, gde su se odmah našli svi mogući datumi u mesecu. Kao posledica buduće automatizacije i predviđanja broja redova, na dnu izvedene table se zatekla i fantomska stavka "empty", a nju sam eliminisao filtriranjem u zaglavlju kolone izvedene tabele. Kad su postavljeni ostali pokazatelji u izvedenu tabelu, ona je dobila tačno onu formu koja je i potrebna. Zbog praznih redova na dnu, i desna kolona izvedene tabele sadrži "empty" za obeležje proizvoda, ali to se ne sme filtrirati, jer bi dani vikenda bili pogubljeni. Ali, svejedno - iz takve izvedene tabele je moguće prekopirati podatke u izveštaj u jednom potezu, a sad je i povezivanje otvoreno kao mogućnost. A što se tiče ručnog dodavanja datuma na dno polazne liste, nakon što je preneta iz SQL baze - kolega me je toliko zbrzio svojom radosnom reakcijom da nisam ni stigao da završim priču. Čim sam završio ovo pisanje za izdanje u časopisu PC, napisao sam mu makro koji će dodati te datume na dno liste za tren oka. No, taj makro je toliko ružan i prljav da nema šanse da se komromitujem objavljujući ga ovde.
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2010; Valinor Design; sva prava pridržana. |