如何在Excel中对‘D hh u mm’格式的时间差列求和?
如何对Excel中“天数 D 小时 u 分钟 min”格式的文本时间差求和
针对D列这种文本格式的时间差,直接求和会触发值错误,以下是两种可行的解决方法:
方法1:Excel公式直接计算
通过提取文本中的数字并转换为时间数值求和,再转回目标格式。假设待求和的D列数据范围是D9:D15,在E列的求和单元格输入以下公式:
=INT(SUMPRODUCT((LEFT(D9:D15,FIND(" D",D9:D15)-1)+MID(D9:D15,FIND(" D",D9:D15)+3,FIND(" u",D9:D15)-FIND(" D",D9:D15)-3)/24+MID(D9:D15,FIND(" u",D9:D15)+2,FIND(" min",D9:D15)-FIND(" u",D9:D15)-2)/1440))&" D "&TEXT(SUMPRODUCT((LEFT(D9:D15,FIND(" D",D9:D15)-1)+MID(D9:D15,FIND(" D",D9:D15)+3,FIND(" u",D9:D15)-FIND(" D",D9:D15)-3)/24+MID(D9:D15,FIND(" u",D9:D15)+2,FIND(" min",D9:D15)-FIND(" u",D9:D15)-2)/1440)-INT(SUMPRODUCT((LEFT(D9:D15,FIND(" D",D9:D15)-1)+MID(D9:D15,FIND(" D",D9:D15)+3,FIND(" u",D9:D15)-FIND(" D",D9:D15)-3)/24+MID(D9:D15,FIND(" u",D9:D15)+2,FIND(" min",D9:D15)-FIND(" u",D9:D15)-2)/1440))),"h"" u ""m"" min """)
公式逻辑:
- 用
LEFT提取天数,MID提取小时和分钟; - 将小时转换为天(除以24)、分钟转换为天(除以1440),和天数相加得到单个时间差的天数值;
SUMPRODUCT求和所有天数值;- 用
INT取总天数,剩余小数部分用TEXT转换为小时和分钟,拼接成目标格式。
方法2:VBA批量求和
如果数据量较大,用VBA处理更高效。运行以下代码可自动计算指定范围的时间差总和:
Sub SumTimeDiff() Dim rng As Range Dim cell As Range Dim totalDays As Long Dim totalHours As Long Dim totalMinutes As Long Dim tempStr As String Dim parts() As String ' 替换为你的D列数据范围 Set rng = ActiveSheet.Range("D9:D15") For Each cell In rng If cell.Value <> "" Then ' 拆分文本提取数字 tempStr = Replace(cell.Value, " D ", "|") tempStr = Replace(tempStr, " u ", "|") tempStr = Replace(tempStr, " min", "") parts = Split(tempStr, "|") ' 累加各时间单位 totalDays = totalDays + CLng(parts(0)) totalHours = totalHours + CLng(parts(1)) totalMinutes = totalMinutes + CLng(parts(2)) End If Next cell ' 处理进位:分钟转小时,小时转天数 totalHours = totalHours + totalMinutes \ 60 totalMinutes = totalMinutes Mod 60 totalDays = totalDays + totalHours \ 24 totalHours = totalHours Mod 24 ' 替换为你要输出结果的单元格 ActiveSheet.Range("E16").Value = totalDays & " D " & totalHours & " u " & totalMinutes & " min" End Sub
代码逻辑:
- 遍历指定范围的每个单元格;
- 通过替换分隔符拆分文本,提取天数、小时、分钟的数值;
- 累加所有数值后处理进位,确保分钟<60、小时<24;
- 将最终结果输出到指定单元格。
优化建议
为了避免后续求和的麻烦,建议计算D列时间差时,同时在隐藏列(如F列)保留原始时间差数值:
- F9输入公式:
=C9-B9(存储日期格式的时间差) - D9输入公式:
=INT(F9)&" D "&TEXT(F9,"h"" u ""m"" min """) - 求和时直接用:
=INT(SUM(F9:F15))&" D "&TEXT(SUM(F9:F15)-INT(SUM(F9:F15)),"h"" u ""m"" min """)
这种方法更稳定,无需处理文本拆分。
内容的提问来源于stack exchange,提问作者I.B
相关产品推荐
相关产品推荐

