You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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批量处理法

适合数据量较大的场景,步骤如下:

  1. 选中待转换的数据列,点击「数据」选项卡→「从表格/区域」(Excel 2016及以后版本支持)
  2. 在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")
  1. 点击「关闭并上载」,转换后的hh:mm格式数据会同步到Excel表格中,可直接用于计算和筛选。

内容的提问来源于stack exchange,提问作者Tarek Saber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:12:41