非标准时间格式,如何快速算出总时长?



Lv.3 优质创作者
有网友咨询了这样一道问题:表格里记录的时间,如下图所示:
他想求出这些时间的总时长?
一看就知道,这个不是标准的时间格式。我们通常的想法是:先转换成标准时间格式,再求和。但问题来了——这个时间格式里,有"h",有"m",有"s",用常规的替换方法做不出来。
那怎么办呢?今天分享一个思路:先把时间全部转换成秒,再求和。
第一步:将时间转换成秒
这里用到的是 WPS 中的 SUBSTITUTES 函数 + EVALUATE 函数。
操作步骤
提取小时、分钟、秒并转换成算式,如下图所示:
数据在 A2:A5 区域,我们在 B2 输入以下公式:
=SUBSTITUTES(A2:A5,{"h";"m";"s"},{"*3600+";"*60+";"+"})&0,
如果你用的Excel可以使用以下公式:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"h","*3600+"),"m","*60+"),"s","+")&0
这两个公式的作用是:
将"h"替换成 *3600+
将"m"替换成 *60+
将"s"替换成 +
最后连接一个 0,保证算式完整
比如"1h7m9秒"就变成了 1*3600+7*60+9+0,也就是一个文本算式。如下图所示:
对文本算式求值
在B2 输入公式:
=EVALUATE(SUBSTITUTES(A2:A5,{"h";"m";"s"},{"*3600+";"*60+";"+"})&0)
EVALUATE 函数可以将文本算式计算出来,得到总秒数。如下图所示:
第二步:计算总秒数
在 B2单元格输入:
=SUM(EVALUATE(SUBSTITUTES(A2:A5,{"h";"m";"s"},{"*3600+";"*60+";"+"})&0))
这样就得到了所有时间的总秒数。如下图所示:
第三步:将总秒数转换成"X小时X分钟X秒"
网友想要的是"4小时6分钟50秒"这样的格式,怎么办?
在 B2 单元格输入公式:
=TEXT(C6/86400,"h小时m分钟s秒")
这里除以 86400 是因为 1 天 = 24小时 × 60分钟 × 60秒 = 86400 秒
回车后,就得到了 4小时6分钟50秒。如图所示:
具体操作可以看视频演示:
关于 Excel 用户
上面的方法是基于 WPS 来完成的。如果你用的是 Excel,Excel 中没有 EVALUATE 函数,那怎么办呢?
其实 Excel 中可以通过 定义名称 的方式来使用 EVALUATE。具体操作:
点击"公式"选项卡 → "定义名称"
名称输入"计算",引用位置输入 =EVALUATE(Sheet1!$B2)
在单元格中输入 =计算 即可
今天的分享就到这里。关于这个问题,你是否还有更好的解决方法?欢迎留言分享!
我是墨云轩,热衷分享办公小技巧,边学习,边分享,每天进步一点点!感谢您的阅读!
Lv.1 新人创作者
Lv.3 优质创作者