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)非常易于安装和使用:
- ALT-F11调出VBE窗口
- ALT-I ALT-M打开一个新的模块
- 粘贴东西,closuresVBE窗口
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除UDF:
- 如上所示调出VBE窗口
- 清除代码
- 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必须启用这个工作!