Excel实用技巧之时间数据的舍入

在处理时间类型的数据时,我们会遇到舍入操作,例如,

  • 考勤时按照15分钟为计算单位,不足15分钟时按15分钟计算

  • 计算服务时间时按10秒为单位,不足10秒按10秒技

  • ......

这些操作很难通过简单的四舍五入函数实现,需要一点点特殊的技巧。

01

我们先来看传统的舍入函数

传统上我们使用ROUND函数来处理舍入问题:

这些操作可以用来处理数值的舍入,但是在我们提到的时间数据上的舍入就不好使了。

01

MROUND函数

这种情况下,我们可以使用MROUND函数。

这个例子中,我们将2小时43分舍入到最近的5分钟的倍数,那就是2小时45分钟

需要提醒一点:

  • 这个舍入是四舍五入,如果B3中的值是2:42:00,结果就是2:40:00。而如果B3中的值是2:42:31,结果就是2:405:00。这是因为31秒首先四舍五入,所以变成了2:43:00

MROUND函数的作用就是将一个数值(第一个参数)舍入到给定数值(第二个)的倍数。

在图中的例子中,第二个参数是5/24/60,这是因为在Excel中时间数据的处理是这样的:

  • 1小时=1/24

  • 1分钟=1小时/60=1/24/60

所以如果,是舍入到1分钟的倍数,那么,可以使用公式

=MROUND(B3,1/24/60)。

这么写有时候觉得不太直观,我们可以使用下面的公式:

=TIME(HOUR(B3),MINUTE(B3)+(SECOND(B3))>30,0)

这个公式中,HOUR,MINUTE,SECOND是得到一个时间值的时,分,秒的函数,而TIME是将时分秒合成为一个时间值的函数。

这个函数的意思是原来的时间值中小时保持不变,秒变为0,而改变原来的分钟值,在原来的分钟值上,加上(SECOND(B3))>30。

如果秒值大于30,这部分公式(SECOND(B3))>30返回TRUE,在公式中进行加减乘除时当作1使用,否则,返回FALSE,在加减乘除时当成你0使用

总结下来,全部公式的意思是小时不变,秒为0,分钟根据秒四舍五入。

这就是舍入到1分钟的倍数。(所以,舍入到1分钟,可以不用 MROUND函数)。

而公式:

=TIME(HOUR(B3),MROUND(MINUTE(B3)+(SECOND(B3))>30,5),0)

就可以将时间值舍入到5分钟的倍数。

比较公式=MROUND(B3,5/24/60),我们刚写这个公式看上去还是比较麻烦的,不过它更加直观一些,我们知道是在时分秒的哪一部分进行操作。

当然,我们也可以让公式=MROUND(B3,5/24/60)直观一些,例如,可以使用“注释
”的方法:

=MROUND(B3,5/24/60)+N('5/24/60表示5分钟')

其中后一部分作为“注释”可以输入任意文字,不影响公式结果。(关于公式加注释的内容请参看这篇文章

03

总结

实际上,在非时间数据中,也会有类似的需求。例如:

做促销方案的时候,有优惠方案是买5赠1,那么就需要将销售数量按照5的倍数进行舍入,可以使用公式

=MROUND(123,5)

结果是125。

前面我们提过,MROUND的处理方式是四舍五入,所以,如果你希望舍掉不足5的部分,那么可以使用公式:

=MROUND(123-2.5,5)

结果就是120。

提醒,这里-2.5,实际上减的是第二个参数的一半。

相反,如果希望不足5的按照5计算,那么可以使用公式:

MROUND(B3,5)+(B3-(MROUND(B3,5))>0)*5

B3的值是123,结果就是125。

这个公式实际上看看MROUND的返回值与原值是否有区别,如果小于原值,表示被舍掉了,所以需要进位。

最后,留一个思考题大家考虑一下:

如果我们的计费系统按照15秒计费,不足15秒按15秒算,大家考虑一下这个公式怎么实现。

END
(0)

相关推荐