如何在Excel中将d h m s格式的文本字符串转换为时间格式
解决时长格式转换为hh:mm的问题
方法一:Excel数组公式法
假设待转换的数据在A列,在B1单元格输入以下公式(旧版Excel需按Ctrl+Shift+Enter作为数组公式执行,新版Excel直接回车即可):
=TEXT(SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(A1,{"d","h","m","s","sm"},{"*1440","*60","","",""}),0))/60,"[hh]:mm")
公式逻辑拆解:
SUBSTITUTE批量替换单位:将d替换为*1440(1天=1440分钟),h替换为*60(1小时=60分钟),m/s/sm替换为空字符串--将处理后的文本转换为数值,IFERROR处理无对应单位的情况(比如不含d的条目返回0)SUM求和得到总分钟数,除以60转换为小时数TEXT用[hh]:mm格式输出,方括号支持超过24小时的小时数显示
测试示例:
- 输入
1d 8h 8m 23sm→ 输出32:08 - 输入
1h 10m 59s→ 输出01:10 - 输入
5m 54s→ 输出00:05
方法二:Power Query批量处理法
适合数据量较大的场景,步骤如下:
- 选中待转换的数据列,点击「数据」选项卡→「从表格/区域」(Excel 2016及以后版本支持)
- 在Power Query编辑器中,点击「添加列」→「自定义列」,输入以下M语言公式(将
数据替换为你的列名):
let input = [数据], parts = Text.Split(input, " "), totalMinutes = List.Sum(List.Transform(parts, each let num = Number.FromText(Text.Remove(_, {"d","h","m","s","sm"})), unit = Text.Select(_, {"d","h","m"}) in if unit = "d" then num*1440 else if unit = "h" then num*60 else if unit = "m" then num else 0 )) in Text.From(Number.IntegerDivide(totalMinutes, 60)) & ":" & Text.PadStart(Text.From(totalMinutes mod 60), 2, "0")
- 点击「关闭并上载」,转换后的hh:mm格式数据会同步到Excel表格中,可直接用于计算和筛选。
内容的提问来源于stack exchange,提问作者Tarek Saber
相关产品推荐
相关产品推荐

