Ideja je torej izdelati elektronski formular, ki bi ga delavci izpolnjevali in pošiljali po elektronski pošti ali kako drugače računovodski službi. Težava pri takšnih formularjih je velikokrat v tem, da jih ljudje napačno ali nepopolno izpolnjujejo. Načeloma tabele v elektronski preglednici ni težko izdelati, večja težava je v tem, kako jo izdelati tako, da bo možnost napačnih vnosov čim manjša. No, pa si oglejmo primer takšne tabele. Tabelo bomo zaradi preglednosti sestavili, kot da gre za tedenski obračun ur, vendar je mesečni popolnoma enak, le da je tabela precej večja oziroma daljša.

Tabelo smo si zamislili tako, da bo uporabnik na vrhu vpisal svoje ime, oddelek ter datum začetka obračuna. Nato bo v tabelo vpisoval ure prihoda in odhoda za vsak dan. Vsak dan bo vseboval dve možnosti prihoda in odhoda, saj gre lahko med malico ali kako drugače delavec recimo ven. Pri obračunu ur bomo upoštevali običajne ure, nadure ter bolniški in običajni dopust. Pri obračunu ur bomo upoštevali tudi to, da se vsaka nadura šteje kot 1,5 ure. Najprej torej nastavimo ustrezne stolpce v tabeli. Določimo stolpce za datum, dan v tednu (ta je dobrodošel zaradi preglednosti), ure prihoda in odhoda, vrste ur, seštevek dejanskih dnevnih ur in skupen seštevek za obračun.

Slika 1: Najprej določimo stolpce tabele obračuna delovnih ur.

Nato za vsak stolpec določimo, kaj se bo v njem dogajalo. Prvi stolpec naj bo datum. Kot rečeno, se pri tovrstnih tabelah pogosto zgodi, da ljudje kaj napačno izpolnijo, zato je treba kar največ stvari avtomatizirati. In začnemo lahko že pri datumu. Zaposleni bodo na vrh delovnega lista napisali začetni datum obračuna. Zakaj bi ta datum pisali še enkrat? Ni potrebe. Če je začetni datum vpisan v polje B3, kot je videti na sliki 1, ga je mogoče samodejno postaviti kot začetni datum v stolpec Datum, ki se začne v celici A7. V to celico vpišemo formulo:

=IF(B3< > "";B3;"")

Kaj to pomeni? Pomeni dobesedno – v celico vpiši to, kar je v celici B3, če ta ni prazna. Sicer bi lahko napisali tudi kar formulo = B3, a bi to pomenilo težave, če bi bila celica B3 prazna (o tem nekoliko pozneje). In tako že imamo prvi datum. Nato se postavimo v naslednjo celico, torej A8, ter vanjo vnesemo formulo:

=IF(A7< > "";A7+1;"")

Ta pomeni, naj se v primeru, da je v A7 kaj vneseno, to poveča za ena. In ker bo v A7 datum začetka obračuna, se bo v A8 ta datum povečal za 1, kar je to, kar želimo. Zdaj celico A8 zgrabimo za spodnji desni rob in jo »raztegnemo« oziroma prekopiramo do celice A13. S tem dobimo datume enega tedna. Če bi radi obračun za ves mesec, zadevo pač razširimo tako, da imamo pokrite datume celotnega meseca. Nato ves teden, v našem primeru torej celice od A7 do A13 označimo, jih kliknemo z desno tipko, izberemo Oblikuj celice in v razdelku Številke označimo celice kot datumske in izberemo želeno obliko.

Stolpec Dan v tednu bo vseboval ime dneva, torej ponedeljek, torek in tako naprej. Ta stolpec načeloma ni potreben, a je dober zaradi preglednosti oziroma je lahko pomoč pri izpolnjevanju. Če se hočemo spomniti, kje smo bili v torek, je to običajno nazornejše, kot pa kje smo bili 2. aprila. Sicer bi lahko že osnovne datume, torej tiste v stolpcu A, oblikovali tako, da bo bili zapisani tudi z dnevom, a je ločeno preglednejše. Zadeva je povsem preprosta – v celice B7 do B13 prekopiramo vse, kar je v celicah A7 do A13, nato te celice označimo in oblikujemo tako, da v razdelku Številke izberemo Po meri, nato pa v vrstico Vrsta vpišemo 'ddd', če želimo dneve v obliki pon., tor., sre. in tako naprej ali pa 'dddd', če hočemo izpisane cele besede.

Slika 2: Stolpec Dan v tednu pripomore k preglednosti.

Tako, zdaj pa lahko zadevo malce zapletemo. Zapletemo tako, da izdelamo sistem, po katerem se bodo v naši tabeli samodejno izračunavale nadure. Zadevo bomo speljali tako, da se bo glede na vpisane ure prihodov in odhodov, v stolpec G, torej tam, kjer bodo vpisane običajen ure, vpisalo največ 8 ur, vse kar pa je več kot to, pa se bo vpisalo v stolpec H, kjer so nadure.

Najprej določanje osemurnega delovnika. Postavimo se v polje G7 in vanj vpišemo formulo:

=IF(((D7-C7)+(F7-E7))*24> 8;8;((D7-C7)+(F7-E7))*24)

Vpis pomeni: če je vsota ur prisotnosti večja od 8, bo v polju število 8, če pa je številka manjša, jo pusti pri miru. S tem smo določili, da je rednih ur lahko največ osem. Nato se postavimo v polje H7 in vanj vpišemo formulo.

=IF(((D7-C7)+(F7-E7))*24> 8;((D7-C7)+(F7-E7))*24-8;0)

Ta pomeni, naj se v tem stolpcu upoštevajo ure nad 8. Zdaj prekopiramo formulo iz G7 v celotno območje, torej do celice G13, enako pa tudi za stolpec H. In kako bo ta zadeva delovala v praksi? Tako, da se bo v primeru, ko bo kdo delal več kot 8 ur, 8 ur štelo v redno delo, vse druge ure pa se bodo samodejno štele kot nadure.

Slika 3: Primer, ko je delavec delal 10 ur (od 8. do 12. ter od 13. do 19. ure). Prvih osem ur je upoštevano kot redno delo, preostali dve pa samodejno kot naduri.

Zdaj moramo določiti obliko celic za področje C7 do F13, kjer bodo zaposleni vnašali ure prihodov in odhodov. Področje označimo, kliknemo z desno tipko, izberemo Oblikuj celice, na seznamu Zvrst izberemo Po meri, nato pa v vnosno vrstico vpišemo 'hh:mm', kar pomeni, da bo zapis v obliki ur in minut, med seboj pa bodo ločeni z dvopičjem.

Tako, zdaj je zadeva tako daleč, da lahko preizkusimo, kako deluje do te stopnje. Najprej v polje Datum začetka vpišemo datum. V celicah A7 do A13 bi se nato morali prikazati dnevi od vpisanega naprej. Nato vpišemo ure prihodov in odhodov in preverimo, ali so izračuni pravilni. Če zadeva deluje, gremo naprej. Zdaj je treba določiti še ure bolniške in dopustov. Tu ni treba zapletati stvari. Ker običajno nimamo dopusta ali bolniške pol ure, je dovolj, če so številke v teh poljih brez decimalnih mest, in privzeto so lahko 0. V našem primeru torej izberemo območje od I7 do J13, kliknemo z desno tipko in prek oblikovanja celic določimo, da gre za običajna števila brez decimalk.

Tako, zdaj pa lahko gremo k izračunom dejanske prisotnosti. Če pogledamo svojo tabelo, lahko dejanske ure izračunamo kar tako, da seštejemo celice od G7 do J7, torej običajne ure, dejanske ure, bolniške in dopust. To je načeloma v redu, saj se zadeve izključujejo. Če je nekdo na dopustu, ne more imeti dejanskih ur ali nadur. A kaj, ko elektronska preglednica tega ne ve! Čisto zadovoljna je s tem, če delavec dela 15 ur dnevno, zraven pa je še 8 ur na bolniški in 6 ur na dopustu. Zato je treba biti pri seštevku malce previden. Formula za seštevanje ur se ne sme glasiti kar SUM(G7:J7), ampak malce bolj zapleteno. Če recimo rečemo, da sta bolniška ali dopust lahko samo cel dan, in ne le nekaj ur, potem se formula lahko glasi:

=IF(AND(G7+H7< > 0;I7+J7< > 0);"Napaka!";SUM(G7:J7))

Pomeni pa: če je vsota delovnih ur in nadur (delavec je bil v službi) večja od nič in hkrati vsota bolniških in dopustniških ur (delavca ni bilo v službi) večja od nič, potem nekaj ni v redu. Če pa je vsaj ena od vrednosti 0, potem seštevanje lahko izvedemo.
Zadevo pa lahko še malce bolj zapletemo. Rekli smo, da bomo vpeljali še stolpec ur za obračun, kjer se bodo nadure štele recimo 1,5-kratno. Če je na primer nekdo delal dve naduri, to pomeni, da se mu bodo pri obračunu ur upoštevali tri ure (2 uri x 1,5). In formula v stolpcu L se bo glasila:

=IF(AND(G7+H7< > 0;I7+J7< > 0);"Napaka!";G7+1,5*H7+I7+J7)

Vidimo, da je zelo podobna prejšnji, le da je zadnja vsota, torej tista za zadnjim podpičjem, zapisana kot vsota posameznih celic, kjer je celica z nadurami pomnožena z 1,5. In tako je naša tabela skoraj končana. Zdaj le še določimo, naj se ure seštejejo, in zadevo malce okrasimo.

Slika 4: Končni videz tabele obračuna ur.

Rekli smo, da je pri takšnih formularjih treba imeti čim več nadzora nad dogajanjem oziroma preverjanja, ali so vneseni podatki pravilni. Eden od načinov, poleg omenjenega, kjer ne moremo kombinirati bolniških ter dopustniških in običajnih ur, je tudi preverjanje, ali se ujemajo vsote posameznih ur po dnevih in vsote različnih vrst ur. V ta namen lahko v K14, kjer imamo v našem primeru tedensko vsoto ur, vnesemo nadzor v obliki formule:

=IF(SUM(G14:J14)=SUM(K7:K13);SUM(G14:J14);"Napaka!")

Formula v bistvu pomeni, da se morajo vsote v vodoravni in navpični smeri ujemati, če pa se ne, bo sporočena napaka. Naslednja stvar, ki jo lahko naredimo je, da zagotovimo, da se bodo v ustrezna poklja vpisovali pravilni podatki – da bo v polju datuma res datum in podobno. Takšne varnostne nastavitve so mogoče preko ukaza Podatki > Veljavnost. Najprej določimo, da mora v polju B3, kamor uporabnik vpiše začetni datum obračuna, resnično datum. To naredimo tako, da označimo celico B3, izberemo Podatki > Veljavnost, odpremo zavihek Nastavitve, nato pa v polju Dovolj izberemo, da je v celici lahko datum, v seznamu podatki določimo, da mora biti datum večji od začetnega datuma 1.1.1900.
Nato določimo, da je lahko v območju celic C7:F13, torej tam, kjer vpisujemo čase prihodov in odhodov, le ura. To naredimo tako, da enako kot prej izberemo meni veljavnosti podatkov, nato pa s seznama Dovoli izberemo čas in določimo, naj bodo vrednosti podatkov med 0:00.00 in 23:59:00.

In zadnja stvar – preprečiti je treba, da bi uporabniki za dneve, ko so na bolniški ali na dopustu, vpisali več kot 8 ur. Postopek spet poteka prek menija veljavnosti, kjer določimo, da je dovoljen vnos Decimalno, podatki pa naj bodo med 0 in 8, kar pomeni, da pri obračunu ne bo mogoče upoštevati več kot 8 ur za dneve, ko bo delavec na dopustu ali bolniški.

Slika 5: Na koncu še varnostni mehanizmi, prek katerih določimo, da mora biti v polju datuma res datum, v polju ur res ure in da bolniška in dopust ne moreta šteti več kot 8 ur dnevno.

Ker pa so lahko uporabniki tudi iznajdljivi, je dobro, če delovni list zaščitimo tako, da je uporabniki lahko spreminjajo le tiste celice, ki jih morajo, ne pa tistih, kjer so na primer formule in podobno. Celice, ki jih lahko spreminjamo, so v naši tabeli celice B1:B3, kjer so osnovni podatki, območje C7:F13, kamor se vpisujejo prihodi in odhodi, ter celice I7:J13, kjer se vpisujejo bolniške in dopusti. Zaščita poteka tako, da najprej zaščitimo celoten delovni list, nato pa dovolimo spreminjanje le omenjenih celic. Najprej celice označimo tako, da držimo tipko Ctrl in se sprehodimo po želenih področjih (B1:B3, C7:F13, I7:J13). Nato izberemo Oblika > Celice in v razdelku zaščita odstranimo kljukico pri možnosti zaklenjena. Nato izberemo Orodja > Zaščita in izberemo Zaščiti list. V okencu, ki se odpre, določimo geslo za dostop, ki bo seveda znano samo nam, da bomo dokument po potrebi lahko spreminjali, v seznamu dovoljenj pa pustimo vključeno le možnost Izbira nezaklenjenih celic.

Slika 6: Na koncu zaščitimo še celoten delovni list, da bodo uporabniki lahko spreminjali samo to, kar jim je dovoljeno.

Tako, zdaj lahko dokument shranimo kot predlogo in jo razpošljemo vsem zaposlenim.
Omenjeni postopek velja za Microsoftov Excel. Kaj pa v programu OpenOffice.org Calc? V njem je zadeva identična, tako da se lahko držite kar opisanega »kuharskega« recepta. Le zaščita poteka malenkostno drugače. Ko izberemo omenjene celice (B1:B3, C7:F13, I7:J13), izberemo Oblika > Celice, v oknu, ki se odpre, pa razdelek Zaščita celice. Nato izberemo Orodja > Zaščiti dokument in izberemo Delovni list. V okencu, ki se odpre, pa določimo geslo. Edina prava razlika med Excelom in Calcom v tem primeru je ta, da Excel ne dovoljuje niti izbire celic, ki jih ne smemo spreminjati, Calc pa dovoli, ob spremembi pa sporoči, da zaščitenih celic ni dovoljeno spreminjati (Slika 7).

V OpenOffice.org Calcu je postopek izdelave časovnice identičen kot v Excelu. Ko dokument zaščitimo, se ob poskusu spreminjanja nedovoljenih celic (v tem primeru G7) prikaže opozorilo. Vidimo tudi, da se v tabeli pojavi sporočilo o napaki, če zaposleni vpiše, da je določen dan delal in bil hkrati na bolniškem dopustu.

Moj mikro, Marec 2010 | Zoran Banovič |