|
Microsoft Office Excel |
|
|
Zaokrugljivanje po propisuNivo:
Iako skoro da više ne baratamo novčićima manjim od jednog dinara, teorija i dalje nalaže račun do jedne pare. Još početkom 2005. godine, objavljen je nekakav nazovi-propis o zaokrugljivanju iznosa u novčanom prometu, po kome se decimalni iznosi do 24 pare zaokrugljuju na nulu, od 25 do 75 para na 50 para, a od 76 para naviše na jedan dinar. Tu tabelu je očigledno napravio neko ko nije naučio u osnovnoj školi kako se pravilno zaokrugljuju brojevi. I sad zbog njega ja moram da pišem VBA funkciju. Ne bih ni znao za to, nego prijatelj me je zamolio da mu pomognem da to reši u Excelu; pošto nije baš vičan formulama, mislio je da neće ići baš tako lako; ispalo je da je u pravu. Sledi zanimljiva priča: da mi je neko drugi pričao, ne bih mu verovao... Krenuo sam da pravim neke "kobasice" od formula, prisećajući se kako John Walkenbach Minut pre nego što sam zamalo rešio da napišem VBA funkciju, u spisku funkcija mi padne pogled na stavku MROUND. Moram priznati, prvi put sam je uočio, ali sam brzo shvatio da je to deo programskog dodatka Analysis ToolPak; taj add-in inače ne držim uključen u svom Excelu, ali sam zaboravio da ga isključim nakon obrade pitanja jednog posetioca Praktikuma. Brzo sam shvatio, to je adut: ta funkcija zaokrugljuje brojeve do najbližeg decimalnog umnoška koji bude naveden kao drugi argument; korak od 0,5 je upravo zaokrugljivanje na 50 para. Bilo bi dovoljno napisati =MROUND(A1;0,5) i posao bi bio gotov - da nije razlike između matematike i preporuke državnog organa, koji upošljava matematičke neznalice. Po toj preporuci, broj 1,75 treba da bude pretvoren u 1,50; funkcija MROUND će ga pretvoriti u 2,00. Sve ostale vrednosti, proverio sam, zaokrugljuju se na željeni način. I tek tad, umesto da sam to učinio odmah, lupio sam ALT+F11, ušao u editor makroa i za tri minuta napisao prostu funkciju:
Function okruglo(broj As Single) As Single
decimale = (broj * 100) Mod 100
celo = Int(broj)
Select Case decimale
Case Is < 25
decimale = 0
Case 25 To 75
decimale = 0.5
Case Is > 75
decimale = 0
celo = celo + 1
End Select
okruglo = celo + decimale
End Function
Nakon unosa u VBE, koristićete je ravnopravno sa drugim, prostim pisanjem formule =OKRUGLO(A1). Ne zaboravite da sigurnost rada makroa mora biti postavljena na srednji nivo (dijalog Alatke / Makro / Bezbednost, tj. Tools / Macro / Security). Ako želite da ovu funkciju pripremite tako da funkcioniše globalno u vašem Excelu, treba da je postavite u biblioteku ličnih makroa (Personal Macro Workbook). Da ne bih ovde po ko zna koji put ponavljao kako se to radi, skoknite na prilog Glavna biblioteka zajedničkih makroa Dok sam pripremao ovaj prilog, vratio sam se problemu, pa sam nastavio da istražujem formule koje sam na početku napravio. Našao sam "onu elegantnu" koju sam tražio, da bih na kraju shvatio da ona, zapravo, radi isto kao i funkcija MROUND; ona glasi =ROUND(A1/0,5;0)*0,5 I sada bi trebalo uneti malo grananja u tu formulu samo zbog nesrećnog 0,75: =IF(MOD(A1*100;100)=75;TRUNC(A1)+0,5;ROUND(A1/0,5;0)*0,5) John Walkenbach bi bio vrlo zadovoljan mojim radom, zar ne? Ali, ovo baš i nije za diktiranje telefonom... Pozdravljam neimenovanog eksperta koji je napisao onaj propis i želim mu da vidi ovu formulu pre nego što opet sedne da uređuje platni promet...
|
|
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. |