keskiviikko 14. tammikuuta 2009

Excel: Aika-arvoilla laskeminen

Excelin kellonajat ja päivämäärät ovat asia, joka näyttää toistuvasti aiheuttavan päänraapimista. Periaatteessa päivämäärillä ja kellonajoilla lasketaan aivan kuten muillakin luvuilla. Niiden käsittelyssä on kuitenkin otettava huomioon periaate, jolla kellonajat ja päivämäärät tallennetaan taulukkoon sekä tiettyjä lukumuotoiluihin liittyviä seikkoja, jotka kerrataan tässä artikkelissa.

Excel tallentaa päivämäärät ja kellonajat järjestysnumeroina siten, että päiväys 1.1.1900 kello 0:00 on 1. Tämän voi todeta kirjoittamalla em. päiväyksen taulukkoon (muista lisätä päiväyksen ja kellonajan väliin tyhjä väli) ja määrittelemällä solun lukumuotoiluksi Yleinen (General).

Tutkitaan vielä seuraavaa päiväystä: 14.1.2009 kello 12:25. Yleinen-lukumuodossa se on desimaaliluku 39827,5173611111, jossa päiväystä vastaa kokonaisluku ja kellonaikaa järjestysnumeron desimaaliosa. Jos esimerkiksi kirjoitat soluun 0,75 ja muunnat lukumuodoksi Aika, solussa näytetään 18:00 mikä vastaa kolmea neljäsosaa vuorokaudesta (vrt. 0,75 = ¼). Tämä toivottavasti selventää lukumuotoilun ideaa.

Kannattaa myös huomata, että Excel hyväksyy erilaisia tapoja kirjoittaa päiväys ja kellonaika. Excel saattaa muotoilla soluun lisätyn aika-arvon automaattisesti, esimerkiksi suomenkielisin maa-asetuksin 01-14 muutetaan muotoon tammi.14. Nämä muotoilut perustuvat Windowsin kieli- ja alueasetuksiin.

Käytännön esimerkki aika-arvoilla laskemisesta ja lukumuotoilujen käytöstä:

Kuvan taulukkoon on laskettu viikon työtunnit (taulukko on pelkistetty jättämällä ruokatunnit pois, mutta ne on helppo lisätä laskelmaan mukaan).

Päivittäiset työajat riville 4 on laskettu lopetus- ja aloitusajan erotuksena =B3-B2. Kaava on muodostettu osoittamalla ja kopioitu muihin saman rivin soluihin.

Viikon kokonaistuntimäärä solussa B6 on laskettu tavallisella summakaavalla =SUMMA(B4:F4) joka oletuslukumuotoilulla antaa vastauksen 18:45. Ilman minkäänlaista päässälaskutaitoakin näkee, että jotakin on pielessä. Laskukaava sellaisenaan on aivan oikein, mutta lukumuotoilu kaipaa säätämistä. Koska tuntimäärä menee yli 24 tunnin, se pitää huomioida käyttämällä tilanteeseen sopivaa lukumuotoilua. Sellainen löytyy luokasta Oma (Custom). Koodi on muotoa [t]:mm:ss ([h]:mm:ss).

Jos vielä halutaan laskea tuntipalkan perusteella viikon palkka, tarvitaan kertolasku. Koska tulon toinen tekijä on aika-arvo – tunteja tarkoittava lukuhan on tallennettu desimaalilukuna (ks. selitys edellä), kaavassa pitää kertoa 24:llä, =24*B6*B7.

Tämä siis pohjustuksena myöhemmin jatkuvaan ajankäsittelyteemaan. Tulossa mm. kalenterifunktioita.

Näppäinyhdistelmät päiväyksen ja kellonajan lisäämiseksi: Kuluvan päivän päiväyksen saa nopeasti soluun näppäinyhdistelmällä Ctrl+Shift+Puolipiste (;) ja kellonajan näppäinyhdistelmällä Ctrl+Shift+Kaksoispiste (:). Tällä tavalla lisätyt päiväys ja kellonaika jäävät lisäyshetken mukaisiksi taulukkoon.


5 kommenttia:

Anonyymi kirjoitti...

Hienoa että joku huomannut tämän saman ongelman ja löytänyt ratkaisun. Kiitos :)

Outi Lammi kirjoitti...

Eipä kestä :)

Anonyymi kirjoitti...

Mitenkähän sama onnistuisi vuorokauden yli, jos oletetaan että työvuoro alkaisi 22:00 ja päättyisi 06:00? Itse en ole tuohon ongelmaan löytänyt ratkaisua.

T: yökyöpeli

Anonyymi kirjoitti...

Vuorokauden ylitykset menee näppärästi pienellä IF lauseella. Eli jos alkamisaika on solussa A2 ja päättymisaika solussa B2 niin lause on =IF(((B2-A2))<0;(B2-A2)+24;(B2-A2))

Anonyymi kirjoitti...

Mihin tuota if/jos lausetta tarvitaan? Riittää B2-A2+24