Excel:总和:mm格式化列

我有一个Excel文件,它显示了date1,date2和它们之间的差异,格式为[h]:mm

但我不能总结这些date的差异。 它加起来为零。 在这里输入图像说明 我恳求帮助,没有答案,我可以find任何地方

T1 T2 Variance 2014/04/16 12:00 2014/04/15 14:00 =IF(B2-A2<0,"-"&TEXT(ABS(B2-A2),"[h]:mm"),TEXT(ABS(B2-A2),"[h]:mm")) 2014/05/16 12:00 2014/04/15 16:10 =IF(B3-A3<0,"-"&TEXT(ABS(B3-A3),"[h]:mm"),TEXT(ABS(B3-A3),"[h]:mm")) 2014/04/15 15:00 2014/04/15 16:00 =IF(B4-A4<0,"-"&TEXT(ABS(B4-A4),"[h]:mm"),TEXT(ABS(B4-A4),"[h]:mm")) 2014/04/15 15:00 2014/05/15 16:00 =IF(B5-A5<0,"-"&TEXT(ABS(B5-A5),"[h]:mm"),TEXT(ABS(B5-A5),"[h]:mm")) 

首先在标准模块中input以下UDF

 Public Function Addtime(rIn As Range) As String Dim c As String, m As String, r As Range, v As String Dim ttime As Long, zum As Long, b As Boolean c = ":" m = "-" zum = 0 For Each r In rIn v = r.Text If InStr(v, c) > 0 And v <> "" Then ary = Split(Replace(v, m, ""), c) b = (Left(v, 1) = m) ttime = 60 * CLng(ary(0)) + CLng(ary(1)) If b Then zum = zum - ttime Else zum = zum + ttime End If End If Next r abszum = Abs(zum) While abszum > 59 hours = hours + 1 abszum = abszum - 60 Wend minutes = abszum Addtime = CStr(hours) & c & CStr(minutes) If zum < 0 Then Addtime = m & Addtime End If End Function 

然后在C6中input:

 =Addtime(C2:C5) 

这应该显示:-40:50

用户定义的函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开一个新的模块
  3. 粘贴东西,closuresVBE窗口

如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除UDF:

  1. 如上所示调出VBE窗口
  2. 清除代码
  3. closuresVBE窗口

从Excel中使用UDF:

= myfunction的(A1)

要了解有关macros的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

有关UDF的细节

macros必须启用这个工作!