VBA从奇怪的格式转换时间

时间:2014-01-09 17:55:19

标签: excel vba excel-vba

我是VBA的新手,正在研究一个子程序,它可以帮助我将通话记录转换成对分析有用的东西。

B列包含引用电话通话时间的值,但格式很奇怪。以下是一些值:

47s 472ms

53s 844ms

55s 164ms

2mn 17s

1mn 5s

1mn 25s

如您所知,如果呼叫时间少于1分钟,则格式为秒,然后是毫秒。如果呼叫大于1分钟,则格式为分钟,然后是秒。

我需要将这些值转换为秒(因此忽略它们出现时的毫秒数)。

你介意帮我写VBA代码吗?谢谢!

1 个答案:

答案 0 :(得分:0)

Public Function ConvertTime(ByVal sTime As String) As Date

    Dim vaSplit As Variant
    Dim lSeconds As Long
    Dim lMinutes As Long

    Const sSEC As String = "s"
    Const sMIN As String = "mn"

    vaSplit = Split(sTime, Space(1))

    If Right$(vaSplit(0), 1) = "s" Then
        lSeconds = Val(Replace(vaSplit(0), sSEC, vbNullString))
    Else
        lSeconds = Val(Replace(vaSplit(1), sSEC, vbNullString))
        lMinutes = Val(Replace(vaSplit(0), sMIN, vbNullString))
    End If

    ConvertTime = TimeSerial(0, lMinutes, lSeconds)

End Function