我是VBA的新手,正在研究一个子程序,它可以帮助我将通话记录转换成对分析有用的东西。
B列包含引用电话通话时间的值,但格式很奇怪。以下是一些值:
47s 472ms
53s 844ms
55s 164ms
2mn 17s
1mn 5s
1mn 25s
如您所知,如果呼叫时间少于1分钟,则格式为秒,然后是毫秒。如果呼叫大于1分钟,则格式为分钟,然后是秒。
我需要将这些值转换为秒(因此忽略它们出现时的毫秒数)。
你介意帮我写VBA代码吗?谢谢!
答案 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