Odgovor na vprašanje v enem izmed forumov, me je spomnil na problem zaokroževanja…
Ena izmed najpogostejših operacij v Excelu je (ob seštevanju) zaokroževanje. Življenje nas preprosto sili v to, da rezultate zaokrožujemo saj jih samo tako lahko vsaj nekako obvladujemo.
Tako večina uporabnikov Excela ob funkciji sum, ki je zagotovo prva funkcija, ki jo spoznajo, spozna tudi funkcijo round. In prej ali slej se vsi naučijo, da je potrebno zaokroževati z uporabo funkcije round(xxx; 2). Mnogi niti ne vedo, čemu tista dvojka sploh služi in jo preprosto privzamejo, drugi vedo, da to pomeni zaokroževanje na dve decimalki (na cente, kot bi temu rekli finančniki) in to jim zadostuje.
Excelovo vgrajeno zaokroževanje
Excel ima za potrebe zaokroževanja na voljo 3 funkcije round, roundUp in roundDown. Prva zaokrožuje na najbližjo vrednost (round), druga na najbližjo višjo vrednost (RoundUp), tretja pa na najbližjo nižjo vrednot (RoundDown).
Kaj to pomeni v praksi? Zamislimo si primer, da želimo neko vrednost zaokrožiti na stotice. Če je to število 248, ga torej lahko zaokrožimo na 200 ali na 300 in funkcija round ga bo zaokrožila na 200, saj je 200 bližje kot 300. Funkcija roundUp ga bo zaokrožila na 300, saj je to najbližje VIŠJA vrednot, funkcija roundDown pa ga bo zaokrožila na 200 saj je to najbližja NIŽJA vrednost.
Vprašanje, ki se pojavi je, kam se zaokroži vrednost, ki je točno na polovici? Kam se torej zaokroži 250? Pri roundUp (300) in roundDown (200) ni problema. Kaj pa round? No roundpa se lahko odloči; ali gor ali dol. In ker se je za nekaj potrebno odločiti, se v Excelu funkcija Round obnaša tako, da zaokroži navzgor.
To je to. Ostaja še odprto vprašanje čemu služi drugi parameter teh funkcij?
PARAMETER: 2
število round(x;2) roundup(x;2) rounddown(x;2)
----------------------------------------------------
3,737 3,740 3,740 3,730
37,999 38,000 38,000 37,990
775,209 775,210 775,210 775,200
3.448,453 3.448,450 3.448,460 3.448,450
Drugi parameter Excelovih vgrajenih funkcij za zaokroževanje
Drugi parameter funkcij roundxxx pove decimalno mesto, na katerega želite število zaokrožiti. Če je torej drugi parameter 2, pomeni da želite zaokroževati na drugo decimalko, torej na stotine. Če je tri bi zaokroževali na tretjo decimalko, če je 0 bi zaokroževali na enice… Hm, kaj pa če je -2? 😉
No če je drugi parameter negativen, pa po čisti inerciji (ali logiki, kakor pač hočete) zaokrožujete po deseticah, stoticah, tisočicah…
Če torej želite nek znesek zaokrožiti na 1000€, kar je pogosto pri velikih zneskih, boste uporabili funkcijo round(xxx, -3). Žena bo sicer uporabila funkcijo RoundUp(xxx, -3), a to je že druga zgodba 🙂
PARAMETER: 0
število round(x;0) roundup(x;0) rounddown(x;0)
----------------------------------------------------
3,737 4,000 4,000 3,000
37,999 38,000 38,000 37,000
775,209 775,000 776,000 775,000
3.448,453 3.448,000 3.449,000 3.448,000
PARAMETER: -2
število round(x;-2) roundup(x;-2) rounddown(x;-2)
----------------------------------------------------
3,737 0,000 100,000 0,000
37,999 0,000 100,000 0,000
775,209 800,000 800,000 700,000
3.448,453 3.400,000 3.500,000 3.400,000
Kaj pa zaokroževanje na poljubno vrednost (na poljubno mejo)?
No; s tem pa sem tale blog pripeljal do moje izhodiščne točke. Originalno vprašanje je namreč bilo kako neko število vedno zaokrožiti na najbližje sodo število? Pogosta variacija tega vprašanja je tudi, kako vse zneske zaokrožiti na 50 centov?
No kaj takšnega Excel po privzetem ne zna, lahko pa do tega pridemo zelo preprosto, če samo malce vključimo možganske celice… Če torej želimo nekaj zaokrožiti na najbližje sodo število, najprej originalno število delimo z dva in pri tem seveda dobimo nek ostanek. Ostanek zanemarimo ter dobljeno število pomnožimo z dva. Dobili smo zaokroženo originalno število! V Excelu bi to zapisali kot round(xxx/2;0)*2 in popolnoma enako deluje tudi s centi, torej: round(xxx/0,5;2)*0,5.
Če torej v splošnem želite neko število zaokrožiti na večkratnik števila M, morate torej uporabiti formulo round(število/M;0)*M.
Zaokroževanje na poljubno mejno vrednost M
formula je torej =ROUND(število/M;0)*M
število M=2 M=0,5 M=25
----------------------------------------------------
3,737 4,000 3,500 0,000
37,999 38,000 38,000 50,000
775,209 776,000 775,000 775,000
3.448,453 3.448,000 3.448,500 3.450,000