案例: 近日,单位交待我负责开票据,对于新手的我有很多都要慢慢摸索。 可是,刚接手不久,就遇到了难题。 收费标准为有三个条件: 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)))) 终于可以啦! |
|
来自: fengyicost > 《excel/wps》