当前位置:首页 > 技术分析 > 正文内容

从不规律的文本「时分」格式中提取并计算正确的时间

ruisui883周前 (04-05)技术分析13

小小表格,变化无穷。

如图,怎么根据B列文本的时分秒格式数据,计算出总的秒数,并以“hh:mm:ss”的格式显示到右侧单元格?



这是我的学员分享出来的一个问题,很有代表性。


分享三种解决思路。


1、分别提取时、分、秒,再作计算


这是最简单粗暴的思路,但是由于文本时间不规律,要想轻松地提取出数字也不是件容易的事。


以下,我写了3个公式,分别提取时、分、秒,各位看看能否看懂?


▲ 提取时


提取小时数,用LEFT从左边提取,具体分两种情况:


1)如果文本中有小时,则提取的位数为:“时”字的位置-1

2)如果文本中没有小时,则FIND将返回错误值,返回0即可


因此,最后外面嵌套一个IFERROR做错误值处理。


▲ 提取分


提取分的思路是,用MID从中间取,起始位置位于“时”字的下一位(如果文本时间中没有“时”字,则从0+1位开始提取),提取的字符数为“分”字的位置减“时”字的位置再减1。


当文本时间如“18秒”,既不包含“时”也不包含“分”时,计算结果会出现错误值,因此最后外面用IFERROR函数处理,将结果显示为0。


▲ 提取秒


提取秒,也有两种情况:


1)文本时间中不存在秒,即FIND查找“秒”时出现错误值,这种情况下返回0

2)文本时间中存在秒,此时可用文本时间的字符长度(LEN)减去“分”字的位置,来获取文本时间中的秒


用RIGHT函数提取文本部分的秒,如:34秒


再嵌套SUBSTITUTE函数,将“秒”字替换为空,得到秒的数值部分,如:34


分别提取时、分、秒数值后,只要简单计算即可计算出对应的总的秒数。



2、直接将文本时间变成文本算式


学过表格学院函数课的同学可能记得,有一节(第19课)是讲文本算式的计算,我们可以想办法将文本时间转化成文本算式。


比如,把文本时间中的“秒”替换为空,把“分”替换为“*60+0”,把“时”替换为“*3600+0”,转化后的效果如下:



为什么替换时要+0,大家可以动手写一下,自行思考。


处理完毕,如果你有安装方方格子插件,可以使用EvaluateExp函数直接进行文本算式的计算,得出结果。



如果没有方方格子,可以用我们函数课里提到的宏表函数进行处理:



由于宏表函数EVALUATE不能直接在单元格中使用,因此先提前在名称管理器中定义。



定义后,直接在单元格中引用定义的名称,得到计算结果。

3、使用LOOKUP构造数组并查找


第3种方法,是@山花子 同学分享的,通过对文本时间格式进行处理,再用LOOKUP进行查询。公式如下 :



对于初学函数的同学,不是很好理解。


在Excel中,当你在单元格输入“1时20分”、“1时20分30秒”时,Excel都会接受并识别你输入的时间,但是如果输入“1时”、“20分30秒”、“30秒”这样的数据时,Excel是识别不了的,会直接认为是文本。


{"0时0分","0时",""}&B6,通过数组计算对原文本格式进行处理,返回结果如下:



再经过负值运算得到:



这里,用LOOKUP(0,-({"0时0分","0时",""}&B6))查找0,因为只有1个非错误值,就会找到这个最接近查找值的值,而这个值当前是一个负值,因此再做一次负值运算:=-LOOKUP(0,-({"0时0分","0时",""}&B6))。


这个结果大家看到了是一个小数,代表的是天数的概念,因此再乘24小时再乘3600秒,得到的就是总的秒数了。


这就是这个公式的原理,如果你还没有看懂,我建议你系统地学一下函数。


事实上,这个公式到目前并不完美,因为一旦文本时间中存在“1时”格式的数据时,就会出错:



因为空""连接“1时”,得到的仍然是“1时”,我们说了“1时”不是Excel能识别的时间,因此,在使用这个公式时,还要做一次处理:



如果结果出现NA,则直接用文本时间&"0分",将其转化为可识别的时间,再转化为秒数。


最后,不管用哪种方法,取出的是总的秒数,我们需要将期显示为规范的时间格式,即“hh:mm:ss”。



用总秒数除以3600,设置单元格格式,自定义格式:hh:mm:ss,搞定!


好了,今天的分享就到这里,如果想系统学习Excel函数课,欢迎私信我哟,我在留言区等大家!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3283.html

分享给朋友:

“从不规律的文本「时分」格式中提取并计算正确的时间” 的相关文章

红帽最新的企业 Linux 发行版具有解决混合云复杂性的新功能

据zdnet网5月1日报道,红帽这家 Linux 和超云领导者今天发布了其最新的旗舰 Linux 发行版 Red Hat Enterprise Linux (RHEL) 9.4,此前上周宣布对已有十年历史的流行 RHEL 7.9 再支持四年。这个领先的企业 Linux 发行版的最新版本引入了许多新功...

Git 分支管理策略与工作流程

(预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。看完这篇文章后,涉及GIT的工作中就会减少因为规范问题导致工作出错,当然如果你现在暂时还未有合...

用IDEA开发如何用Git快速拉取指定分支代码?

1,准备空的文件夹,git init2,关联远程仓库,git remote add origin gitlab地址3,拉取远程分支代码,git pull origin 远程分支名再用IDEA打开项目即可...

迁移GIT仓库并带有历史提交记录

迁移git仓库开发在很多时候,会遇到一个问题。GIT仓库的管理,特别是仓库的迁移。我需要保留已有的历史记录,而不是重新开发,重头再来。我们可以这样做:使用--mirror模式会把本地的分支都克隆。// 先用--bare克隆裸仓库 git clone git@gitee.com:xxx/testApp...

HTML5学习笔记三:HTML5语法规则

1.标签要小写2.属性值可加可不加””或”3.可以省略某些标签 html body head tbody4.可以省略某些结束标签 tr td li例:显示效果:5.单标签不用加结束标签img input6.废除的标签font center big7.新添加的标签将在下一HTML5学习笔记中重点阐述。...

2024年,不断突破的一年

迈凯伦F1车队不久前拿下了2024年度总冠军,距离上一次还是二十几年前。在此期间,另一领域内,一个充满革新活力的腕表品牌——RICHARD MILLE理查米尔,正不断发展,与F1运动、帆船、古董车展等领域,共享着对速度与极限的无尽向往。RICHARD MILLE的发展与F1车手们在赛道上的卓越表现交...