
问题:如何求两个时间差的差值?
答案:可以综合使用TIMEVALUE、INT、MOD函数解决
本文使用的演示软件是EXCEL2010。

在其它的软件里,两个时间的差值,一般用DATEDIFF函数来解决,其实EXCEL里也有DATEDIF函数,只不是隐藏的,并不在函数列表中。但它使用起来非常局限性非常大,求二个日期的天数差挺好用的,但不如直接用减法省事,求月份差、年份差也挺方便的,但如果要求两个时间的秒、分、时的差值就不适用了。今天就介绍下如何使用TIMEVALUE函数来求任意一个时间的差值。
TIMEVALUE函数功能:将时间值从字符串转化为序列数,简单的说就是计算给定的时间从0(12:00:00 M)经过了多少秒(这里不是单纯的秒,要换算)

简单版:只计算两个时间的差值。为了降低难度,强制指定小日期在前面,大日期在后面。
解决思路:
1、利用TIMEVALUE函数求出起始时间的序列值。如下图:

2、计算出1秒时间的序列差值,这步很关键,如下图:

3、计算出起始时间的序列值的差值,然后除以1秒时间序列差,就可以得到二个时间相关的秒数,如下图:

到些为止,你给定任何二个时间,都可以算出它们相关多少秒。
公式整合:=(TIMEVALUE(B2)-TIMEVALUE(B1))/(TIMEVALUE("0:0:1")-TIMEVALUE("0:0:0")),整合之后就可以一次搞定了。EXCEL函数的学习建议大家可以这么做,先拆分逐步解决,最后再整合成一个公式。

提高版:如何求出二个时间差多少分、多少小时呢?
知道了二个时间的秒数差,我们可以将它除以60,然后取整就可以了。如下图:

同理,将秒数除以3600后取整就可以得到小时数的差值了。如下图:

综合版:要用到&符号将各个部分连接起来。为了避免显示问题,要将秒数差取整。其它的就是利用MOD函数取出相应部分除以60的余数。
=MOD(INT((TIMEVALUE(B2)-TIMEVALUE(B1))/(TIMEVALUE("0:0:1")-TIMEVALUE("0:0:0"))/3600),60) &"小时" & MOD(INT((TIMEVALUE(B2)-TIMEVALUE(B1))/(TIMEVALUE("0:0:1")-TIMEVALUE("0:0:0"))/60),60) &"分" &MOD(INT((TIMEVALUE(B2)-TIMEVALUE(B1))/(TIMEVALUE("0:0:1")-TIMEVALUE("0:0:0"))),60) &"秒"

以上就是如何求二个时间的差值的方法。
