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

Excel中拆分时长超30分钟的记录并生成新行的方法

Excel时长拆分解决方案

针对你需要将Duration>30的行按30分钟拆分、同时累加起止时间的需求,这里提供两种高效实现方法:

方法一:Power Query批量处理(推荐)

适合大量数据的自动化拆分,步骤如下:

  1. 选中你的数据区域,点击「数据」选项卡 → 「从表格/范围」,勾选「我的表格有标题」后进入Power Query编辑器。
  2. 添加自定义列生成拆分后的行列表:
    点击「添加列」→「自定义列」,输入以下M语言公式:
    List.Repeat({[UserId, Status, 30, Start_Date, End_Date]}, Number.IntegerDivide([Duration], 30)) 
    & if Number.Mod([Duration], 30) > 0 then {[UserId, Status, Number.Mod([Duration], 30), null, null]} else {}
    
    这个公式会先生成所有30分钟的行记录,再追加剩余时长的行(如果有余数)。
  3. 展开列表到新行:点击自定义列右侧的「展开到新行」图标,将列表拆分为独立行。
  4. 添加索引列:点击「添加列」→「索引列」→「从0开始」,用于计算时间累加值。
  5. 计算新的Start_Date:
    再次添加自定义列,输入公式:
    [Start_Date] + #duration(0, 0, 30*[Index], 0)
    
    该公式会基于原开始时间,按索引累加30分钟。
  6. 计算新的End_Date:
    添加自定义列,输入公式:
    [Start_Date_New] + #duration(0, 0, [Duration], 0)
    
    (注意将Start_Date_New替换为你上一步生成的列名)
  7. 清理列:删除原始的Start_Date、End_Date、索引列,调整列顺序与原表一致。
  8. 导出结果:点击「关闭并上载」,处理后的数据会自动导入新工作表。

方法二:公式法(适合少量数据)

假设原数据表头在A1:E1,第一行数据在A2:E2,在空白区域(如G1:K1)复制原表头,然后在G2开始输入以下公式:

  • UserId列(G2):
    =INDEX($A:$A,INT((ROW(A1)-1)/ROUNDUP($D2/30,0))+2)
    
  • Status列(H2):
    =INDEX($B:$B,INT((ROW(A1)-1)/ROUNDUP($D2/30,0))+2)
    
  • Duration列(I2):
    =IF(MOD(ROW(A1)-1,ROUNDUP($D2/30,0))<ROUNDUP($D2/30,0)-1,30,IF(MOD($D2,30)=0,30,MOD($D2,30)))
    
  • Start_Date列(J2):
    =INDEX($C:$C,INT((ROW(A1)-1)/ROUNDUP($D2/30,0))+2)+TIME(0,30*(MOD(ROW(A1)-1,ROUNDUP($D2/30,0))),0)
    
  • End_Date列(K2):
    =J2+TIME(0,I2,0)
    

下拉填充公式直到出现空值,最后复制结果并粘贴为值即可完成整理。

示例数据处理效果

原数据行:

UserIdStatusDurationStart_DateEnd_Date
Eman.Aldosaryworking on email, no acd55206-09-22 7:3006-09-22 16:30

拆分后会生成19行:前18行Duration为30,每行Start_Date依次累加30分钟;最后一行Duration为12,Start_Date为原时间加18*30分钟(即06-09-22 16:30),End_Date为16:30加12分钟(16:42)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:30:55