Excel VBA
EXCEL VBA秒转为时分秒的函数后改转换为天时分秒的通用函数
2017-05-19 08:06:18

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.html

Public Function SecToDHMS(lngSec As Long, Optional intType As Integer = 0)

 

 Dim lngMod1 As Long

 Dim lngMod2 As Long

 Dim lngMod3 As Long

 Dim strFormat As String

 Select Case intType

    Case 0

       strFormat = "00" '秒分时 2位对齐 且显示最全的内容 ,没有内容的补齐0  '000天00小时45分02秒

    Case 1

       strFormat = "0" '秒分时 按实际长度  '45分2秒

       

 End Select

 

 If 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 If

 End 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