分享

巧用舍入函数

 fengyicost 2019-05-10


案例:

近日,单位交待我负责开票据,对于新手的我有很多都要慢慢摸索。

可是,刚接手不久,就遇到了难题。

收费标准为有三个条件:

1、面积在50平方米(含本数)以下的,收费80元;

2、面积在50-100平方米以内的,收费120元;

3、超过100平方米的,每超100平方米的加收40元,超过部分不足100平方米的按100平方米计算。

要按照这个条件开具票据。

初时,我采取了一个比较笨的方法,慢慢根据条件加上数,但这样一来,小数目的还好,但数目一大,就比较容易出错。

我想到了用表格,初时的表格是:

计算单位 计算数量 金额

122.76

160

124.32

160

67.90

120

金额=IF(计算数量<50,80,IF(计算数量<100,120,IF(计算数量<200,160,IF(计算数量<300,200,IF(计算数量<400,240,IF(计算数量<500,280,IF(计算数量<600,320,IF(计算数量<700,360,IF(计算数量<800,400,IF(计算数量<900,440,IF(计算数量<1000,480)))))))))))

这样,虽然可以避免自己计算错误,但是数目一大的话,这个公式超级烦琐,还是容易出错。

怎么办呢?

经过多次尝试,终于发现一个小公式可以完成:

金额=(计算数量-100)/100*40+120,

但是这个公式只能够满足条件3,而前面的条件1、条件2就不能满足。

于是,我根据之前自己设的IF函数和这个公式相结合,就变成:

金额=IF(计算数量<50,80,IF(计算数量<100,120,IF(计算数量<200,160,((计算数量-100)/100*40+120))))

这时,得出的答案已经基本相近。

还有一个问题就是,这个公式只是以计算数量的原数来去计算,就会出现小数点,而我们的收费标准是以每100平方米来计算。

多方请教,有高手告诉了我ROUND函数,查书得知:使用此函数返回某个数字按指定位数后的数字。

函数原形是:ROUND(number,num_digits),参数Number为需要进行四舍五入的数字;参数Num_digits是指定的位数,(如果此数大于0,则四舍五入到指定的小数位;如果此数等于0,则四舍五入到最接近的整数;如果此数小于0,则在小数点左侧进行四舍五入)按此位数进行四舍五入。

将公式更改:

金额=IF(计算数量<50,80,IF(计算数量<100,120,IF(计算数量<200,160,(((ROUNDUP(计算数量,-2))-100)/100*40+120))))

这时,虽然可以将百位数四舍五入,但又有新的问题出现了。

如计算数量为214.31平方米,应收的金额应为200元,

解答过程:50至100平方米,收120元+超过114.31平方米(按标准应按超200平方米收费,每超100平方米加收40元)=120元+80元=200元

而如果按照对上的公式,系统显示只收160元,究竟哪里出错呢?

我再用另外的表格对比,问题仍然存在,

我将数复制出来,用空表格制作了一个对比表,发现问题就在ROUND函数!

继续翻查相关书籍,终于,找到了与ROUND函数接近的另外下一个函数:ROUNDUP函数!

ROUNDUP函数是实现远离零值,向上舍入数字 。它与函数ROUND功能相似,不同之处在于函数ROUNDUP总是向上舍入数字。

这是我用表格附带的不要小数点与ROUND、ROUNDUP函数相比较的结果:

要舍入数 去除小数点 结果(round) 结果(roundup)

30.79

31

0 100

104.66

105

100 200

214.31

214

200 300

14665.39

14665

14700 14700

14895.58

14896

14900 14900

哈哈,针对自己的票据业务,最后,我将我的公式更改为:

金额=IF(计算数量<50,80,IF(计算数量<100,120,IF(计算数量<200,160,(((ROUNDUP(计算数量,-2))-100)/100*40+120))))

终于可以啦!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多