金山WPS

关注公众号 jb51net

关闭
软件教程 > 办公软件 > 金山WPS >

1秒批处理1000条混乱时间数据! wps excel是一个超级时间管理器

脚本之家

网友求助SOS:如何批处理1000条混乱的时间数据?到底是什么工作场景呢,下面我们举例还原真实的职场案例。

如下图所示:

A列是一列相对格式混乱的文本型时间数据,有的是"x时x分x秒"格式,有的是"x秒"格式,也有的是"x分x秒"格式,我们想要将这些格式不太一样的时间数据转换为统一的数字型时间格式"h:mm:ss"。比如"49时25分7秒"被转成了"49:25:07",而像"7秒"变成了"0:00:07"。

有的小伙伴还可能注意到:有“小时”或“时”的不同情况,比如“1小时”或“49时”。

这种问题看似很难,无法立即找到解题的方法。但是相信只要我们掌握了Excel常用的基础的函数,并找到科学的严谨的思路,就可以尝试解决。

第一步:提取数字

输入公式:

=REGEXP(A2,"\d+(?="&{"小|时","分","秒"}&")")

通过REGEXP正则表达式函数提取“时/小时、分、秒”前的数字。

匹配规则解释:

\d+:匹配一个或多个数字。

正则表达式里的(?=...)是正向肯定预查,匹配数字,符合数字后面跟着的是小时/时、分或秒的情况。

最后返回数组:{小时, 分, 秒}。比如49时25分7秒→{49,25,7},而匹配不到数字后面跟着的是小时/时、分或秒的情况时,会返回错误值。比如:7秒→{#N/A,#N/A,7}。

第二步:缺失单位处理

外嵌IFNA公式:

=IFNA(REGEXP(A2,"\d+(?="&{"小|时","分","秒"}&")"),)

IFNA函数有一个常见用法,当第一参数为错误值,且跳过第2参数时,会返回固定的“0”值。

所以,此步骤的目的是处理未匹配到的时间单位(如文本中无“时”与“分”时,默认补0)。

若某单位未匹配到,对应位置留“0”。比如:7秒→{"0", "0", "7"}

第三步:连接字符串

外嵌EXTJOIN函数:

=TEXTJOIN(":",,IFNA(REGEXP(A2,"\d+(?="&{"小|时","分","秒"}&")"),))

TEXTJOIN(":", , ...) 结构功能:

用冒号“:”连接小时、分、秒。生成时间格式文本字符串。

比如:{49,25,7}→49:25:7

再比如:{"0","0","7"}→0:0:7

第四步:文本格式数值化

输入公式:

=TEXTJOIN(":",,IFNA(REGEXP(A2,"\d+(?="&{"小|时","分","秒"}&")"),))*1

...*1 结构功能:

将文本时间转换为Excel可识别的数字序列号。

Excel将时间视为小数(1小时=1/24,1分钟=1/1440)。

例如 49:25:7 会转换为表示总时长的数值"2.0591087962963"。

第五步:格式化为时间

外嵌TEXT函数:

=TEXT(TEXTJOIN(":",,IFNA(REGEXP(A2,"\d+(?="&{"小|时","分","秒"}&")"),))*1,"[H]:mm:ss")

TEXT(..., "[H]:mm:ss") 结构功能:

将序列号格式化为标准时间格式。

[H]显示超过24小时的总时长(如49小时直接显示为49)。

mm和ss补足两位,如7秒→07。

推荐阅读:wps怎么排列时间顺序? WPS里利用AI编写代码对行内时间正向排序技巧