咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

小小表格,变化无穷。

如图,怎么根据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函数课,欢迎私信我哟,我在留言区等大家!