求助:如何将带姓名的(n)h (n)m (n)s时间列表转为hh:ss:mm格式?
把h/m/s格式时间转成hh:ss:mm的两种方法
方法一:Excel公式处理
如果你的数据在Excel的A列(比如A2单元格内容是「Ben 1h 23m 45s」),可以用以下步骤转换:
提取时间各部分:
- 小时数(支持1位/2位):
=IFERROR(--LEFT(MID(A2,FIND(" ",A2)+1,FIND("h",A2)-FIND(" ",A2)-1),LEN(MID(A2,FIND(" ",A2)+1,FIND("h",A2)-FIND(" ",A2)-1))),0) - 分钟数:
=IFERROR(--LEFT(MID(A2,FIND("h",A2)+1,FIND("m",A2)-FIND("h",A2)-1),LEN(MID(A2,FIND("h",A2)+1,FIND("m",A2)-FIND("h",A2)-1))),0) - 秒数:
=IFERROR(--LEFT(MID(A2,FIND("m",A2)+1,FIND("s",A2)-FIND("m",A2)-1),LEN(MID(A2,FIND("m",A2)+1,FIND("s",A2)-FIND("m",A2)-1))),0)
- 小时数(支持1位/2位):
拼接成目标格式:
把上面三个公式分别放在B、C、D列,然后在E列用公式拼接:=TEXT(B2,"00")&":"&TEXT(D2,"00")&":"&TEXT(C2,"00")
若姓名和时间在同一单元格,可先用=LEFT(A2,FIND(" ",A2)-1)提取姓名,再和转换后的时间拼接。
方法二:Python批量处理
如果数据量较大,用Python脚本处理更高效,直接写个小脚本就能批量转换:
import re def convert_time(line): # 拆分姓名和时间 name_part = re.match(r'(.+?)\s+\d+h', line).group(1).strip() # 提取时、分、秒并补零 h = re.search(r'(\d+)h', line).group(1).zfill(2) m = re.search(r'(\d+)m', line).group(1).zfill(2) s = re.search(r'(\d+)s', line).group(1).zfill(2) # 按hh:ss:mm格式拼接返回 return f"{name_part} {h}:{s}:{m}" # 测试示例 test_data = [ "Ben 1h 23m 45s", "Alice 10h 5m 8s", "Bob 0h 15m 30s" ] for item in test_data: print(convert_time(item))
运行后输出:
Ben 01:45:23 Alice 10:08:05 Bob 00:30:15
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

