Excel 2016时间差计算方法:如何显示两个时间的分钟差及解决时分秒差计算的#VALUE!错误
Hey,刚好碰到过类似的Excel时间计算问题,给你详细拆解一下两个问题的解决方法:
1. Excel 2016中计算两个时间的分钟差值
Excel里的时间本质是按小数存储的(1天=1,1小时=1/24,1分钟=1/(24*60)),所以计算分钟差其实很直接:
- 如果只需要整数分钟,用公式:
=ROUND((结束时间单元格-开始时间单元格)*1440, 0) - 如果要保留毫秒对应的小数分钟,直接用:
=(结束时间单元格-开始时间单元格)*1440
举个实际例子:假设A1是开始时间,B1是结束时间,输入=(B1-A1)*1440回车,就能得到准确的分钟差值了。
2. 带毫秒的时间差计算及#VALUE!错误解决
你遇到的#VALUE!错误,核心原因是Excel没把你输入的23-DEC-19 09.00.17.393922000 AM格式识别成日期时间,而是当成了纯文本,文本之间没法做减法运算,自然就报错了。咱们分两步解决:
第一步:把文本格式的时间转换成Excel可识别的日期时间
你的时间格式里,小时、分钟、秒用点号分隔,还有多余的末尾0和AM,得先调整成Excel认可的格式(比如2019/12/23 09:00:17.393922)。用SUBSTITUTE+DATEVALUE+TIMEVALUE组合就能搞定:
假设开始时间在A2,结束时间在B2,先把A2转成有效日期时间,放在C2:
=DATEVALUE(LEFT(A2,9)) + TIMEVALUE(REPLACE(SUBSTITUTE(MID(A2,11,18), ".", ":"), 10, 1, "."))
对这个公式的简单解释:
LEFT(A2,9)提取日期部分23-DEC-19,DATEVALUE把它转成Excel能识别的日期序列号MID(A2,11,18)提取时间部分09.00.17.393922000 AMSUBSTITUTE把所有点号换成冒号,变成09:00:17:393922000 AMREPLACE把第10位的冒号换回点号,变成09:00:17.393922000 AM,这样TIMEVALUE就能识别成有效时间了
同样的,把B2转成有效日期时间放在D2。
第二步:计算带毫秒的时、分、秒差值
现在C2和D2是Excel认可的日期时间格式,就可以正常计算差值了。根据你的需求,这里提供两种公式:
方法1:完整显示天、时、分、秒(含毫秒)
=INT(D2-C2)&" days, "&HOUR(D2-C2)&" hours, "&MINUTE(D2-C2)&" minutes, "&TEXT((D2-C2)*86400, "0.000000")&" seconds"
INT(D2-C2)取整数天数HOUR/MINUTE分别提取小时、分钟数(D2-C2)*86400把时间差转换成总秒数(1天=86400秒),TEXT函数保留6位小数,就能显示毫秒部分
方法2:简化格式显示时、分、秒(含毫秒)
如果不需要显示天数,直接用TEXT函数格式化更简洁:
=TEXT(D2-C2, "h"" hours, ""m"" minutes, ""s.000000"" seconds""")
这个公式会自动根据时间差的长度,显示对应的小时、分钟、秒和毫秒。
补充:为什么原公式报错?
原公式里直接用B2-A2,但此时B2和A2是文本格式,Excel无法对文本执行减法运算,所以返回#VALUE!错误。只要先把文本转成Excel能识别的日期时间格式,所有时间运算就能正常进行了。
内容的提问来源于stack exchange,提问作者user16871229




