分享

【Excel分享】如何实现4舍6入5不变?

 L罗乐 2016-11-22





大家好,今天和大家分享“4舍6入5不变”,这是一个群友的提问,也许我的描述不对,但题意是这个意思,如输入4.5,返回4.5;输入4.4就返回4;4.6就返回5。


具体效果大家看一下动画



看完动画之后,大家想学这个吗?想学的跟我一起来

公式

=IF(A1='','',INT(A1) LOOKUP(ROUND(MOD(A1,1),1),{0,0.5,0.6},{0,0.5,1}))

公式解释

  1. =MOD(A1,1)这个函数作用返回两数相除的余数,第2参数用1,就是提取小数部分,很经典,大家下次谁问你不要整部分,你马上想到它mod


  2. 由于excel本身存在一个浮点问题,相信许多会计朋友,由于对帐差1分钱,老板也不给发工资的事常有,所以为了保险还要在Mod函数前面嵌套一个round函数,你如果不信,你可以测试这个公式=INT(A1) LOOKUP(MOD(4.6,1),{0,0.5,0.6},{0,0.5,1})返回4.5,我们期望它返回5,这就是浮点问题引起的。我记得有一个学员“真诚待人'在学习vba过程,判断单元格是否相等也纠结这个问题了,公式为=Round(MOD(A1,1),1)精确到小数位第1位。而公式=INT(A1) LOOKUP(ROUND(MOD(4.6,1),1),{0,0.5,0.6},{0,0.5,1})返回了5

  3. =int(A1)取整,把它整数部分留下


  4. 公式=LOOKUP(ROUND(MOD(4.6,1),1),{0,0.5,0.6},{0,0.5,1})第1参数查找值,第2参数{0,0.5,0.6}

    第3参数{0,0.5,1},什么意思呢,由于第2参数我们用了升序排序,所以根据lookup函数“二分法“原理,首找找和它相等的,找不到相等的找比它小的,而比它小的有许多,从小的里面找一个最大的

    如查找值是0.7,第2参数没有0.7,找比它小的有0.6,0.5,0,小的里面0.6最大,0.6在第2参数第3个位置 ,返回对应第3参数第3个位置的值1

  5. if公式在此是起一个屏幕0的作用if(A1='','',公式)如果A1='',那么显示空,否则就显示公式。

    最后公式为

    =IF(A1='','',INT(A1) LOOKUP(ROUND(MOD(A1,1),1),{0,0.5,0.6},{0,0.5,1}))

好了,今天晚上我们就聊到这里,谢谢大家收看

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多