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

如何从导出的班次数据字符串中提取hh:mm-hh:mm格式的起止时间

高效提取班次时间的Excel解决方案

方法1:Excel 365/2021专属:TEXTBEFORE/TEXTAFTER组合(最简便)

假设数据在A1单元格,直接用文本拆分函数定位时间,再转成标准格式:

=TEXT(VALUE(TEXTBEFORE(TEXTAFTER(A1," ",3)," ")),"hh:mm")&"-"&TEXT(VALUE(TEXTBEFORE(TEXTAFTER(A1,"-",2)," ")),"hh:mm")

逻辑拆解:

  • TEXTAFTER(A1," ",3):捞取第一个日期后的片段(例:9:30 AM-09/08/2022 6:00 PM)
  • TEXTBEFORE(..., " "):拆分出开始时间文本(例:9:30 AM)
  • VALUE()+TEXT(..., "hh:mm"):把文本时间转成24小时制的hh:mm格式
  • 后半段用同样逻辑提取结束时间,最后用&"-"拼接

方法2:兼容多版本:FILTERXML函数

通过构造XML节点批量提取目标内容:

=TEXT(VALUE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"-","</s><s>")," ","</s><s>")&"</s></t>","//s[4]")),"hh:mm")&"-"&TEXT(VALUE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"-","</s><s>")," ","</s><s>")&"</s></t>","//s[7]")),"hh:mm")

逻辑拆解:

  • 两次SUBSTITUTE把空格和连字符替换成XML节点分隔符,将整段文本拆成节点列表
  • //s[4]定位第4个节点(开始时间文本),//s[7]定位第7个节点(结束时间文本)
  • 后续格式转换同方法1

方法3:批量处理首选:Power Query

数据量大时用Power Query一键批量提取:

  1. 选中数据列,点击数据→从表格/区域,导入Power Query编辑器
  2. 点击添加列→自定义列,输入公式:
    let
        splitText = Text.Split([Column1], " "),
        startTime = Text.From(Time.FromText(splitText{3})),
        endTime = Text.From(Time.FromText(splitText{6}))
    in
        startTime & "-" & endTime
    
  3. 点击关闭并上载,直接得到批量处理后的结果

方法4:重复使用自定义:VBA函数

需要反复调用时,写个简单的VBA自定义函数:

  1. 按Alt+F11打开VBA编辑器,插入新模块
  2. 粘贴代码:
    Function GetShiftTime(cell As Range) As String
        Dim arr() As String
        arr = Split(cell.Value, " ")
        GetShiftTime = Format(TimeValue(arr(3)), "hh:mm") & "-" & Format(TimeValue(arr(6)), "hh:mm")
    End Function
    
  3. 返回Excel,在单元格输入=GetShiftTime(A1)即可提取时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:03:27