EXCEL VBA秒转为时分秒的函数后改转换为天时分秒的通用函数
'秒转为时分秒的函数 '后改进为秒转换为天时分秒的通用函数 '2种格式选择 'intType为0 天时分秒 其中 秒分时 2位对齐 且显示最全的内容 ,没有内容的补齐0 '000天00小时45分02秒 'intType为1 天时分秒 其中 秒分时 按实际长度 '45分2秒‘来源:Excel中国 作者: tmtony 转载请务必保留此行http://www.excel-cn.com/tip/237-cn.htmlPublic Function SecToDHMS(lngSec As Long, Optional intType As Integer = 0)Dim lngMod1 As LongDim lngMod2 As LongDim lngMod3 As LongDim strFormat As StringSelect Case intType Case 0 strFormat = "00" '秒分时 2位对齐 且显示最全的内容 ,没有内容的补齐0 '000天00小时45分02秒 Case 1 strFormat = "0" '秒分时 按实际长度 '45分2秒 End SelectIf intType = 0 Then lngMod3 = (lngSec Mod 86400) lngMod2 = (lngSec Mod 3600) lngMod1 = (lngMod2 Mod 60) SecToDHMS = Format(Int(lngSec / 86400), "000") & "天" & Format(Int(lngMod3 / 3600), strFormat) & "小时" & Format(Int(lngMod2 / 60), strFormat) & "分" & Format(lngMod1, strFormat) & "秒" '& IIf(lngMod1 = 0, "", lngMod1 & "秒")Else If lngSec < 60 Then SecToDHMS = Format(lngSec, strFormat) & "秒" ElseIf lngSec < 3600 Then lngMod1 = (lngSec Mod 60) SecToDHMS = Format(Int(lngSec / 60), strFormat) & "分" & Format(lngMod1, strFormat) & "秒" ' 'IIf(lngMod1 = 0, "", lngMod1 & "秒") ElseIf lngSec < 86400 Then lngMod2 = (lngSec Mod 3600) lngMod1 = (lngMod2 Mod 60) SecToDHMS = Format(Int(lngSec / 3600), strFormat) & "小时" & Format(Int(lngMod2 / 60), strFormat) & "分" & Format(lngMod1, strFormat) & "秒" ' & IIf(lngMod1 = 0, "", lngMod1 & "秒") Else lngMod3 = (lngSec Mod 86400) lngMod2 = (lngSec Mod 3600) lngMod1 = (lngMod2 Mod 60) SecToDHMS = Format(Int(lngSec / 86400), "000") & "天" & Format(Int(lngMod3 / 3600), strFormat) & "小时" & Format(Int(lngMod2 / 60), strFormat) & "分" & Format(lngMod1, strFormat) & "秒" '& IIf(lngMod1 = 0, "", lngMod1 & "秒") End IfEnd If 'SecToDHMS= (lngSec \ 86400) & "天" & (lngSec Mod (lngSec \ 86400) * 86400) \ 3600; "小时" & (lngSec Mod 3600) \ 60; "分" & s Mod 60; "秒"End Function
如果直接在Excel 转换,则可以使用例如:将100秒转成时分秒的格式
=TEXT(A1/86400,"h小时m分钟s秒") 0小时1分钟40秒
=TEXT(C1/86400,"d天h小时m分钟s秒") 0天 0小时1分钟40秒
=TEXT(C1/86400,"hh:mm:ss")00:01:40
|