maanantai 16. tammikuuta 2017

Yleisökysymys: Laskutuksen alkavat tunnit

Jokin aika sitten minulta taas kysyttiin Excel-apua hommaan, joka oli alunperin täysin manuaalista, mutta joka automatisoitiin kaavalla hetkessä.

Lähtötilanne:  Yrityksen työntekijä teki asiakaslaskutusta ja laskutusehtojen mukaisesti pienin yksikkö oli puoli tuntia. Laskutettavat työtunnit piti siis saada pyöristettyä ylös seuraavaan täyteen puolituntiseen. Työajanhallintaohjelma oli jo valmiiksi muotoillut ajan desimaaliluvuiksi, joka on myös Excelin tapa käsitellä aikaa, joten yksi homma vähemmän hoidettavaksi. Dataa oli kuitenkin 2000 riviä (kuva vieressä) joka kuukausi ja kaikki rivit oli tähän asti käyty läpi käsin.

Keskustelun aikana itsellä kävi ensimmäisenä mielessä jokin äärimakee sisäkkäisten IF-lauseiden monsterikaava. Sen verran rokkitähteyttä tässä suonissa virtaa. ROUND() ja ROUNDUP() eivät toimi, koska pyöristävät matemaattisesti oikein vaikka niitä hiukan voikin ohjailla. Tässä tapauksessa oli tarve pakottaa pyöristää aina ylöspäin, riippumatta matemaattisista pyöristyssäännöistä.