1. 程式人生 > 實用技巧 >通過VBA將文字格式的時間轉換為數字格式

通過VBA將文字格式的時間轉換為數字格式

後臺系統匯出來的工單歷時資料,是文字格式的,如"1天18時12分28秒",要統計工單平均歷時,只能整成數值格式的了。

方法:將文字格式裡面的數字抽取出來,再組合成excel能理解的數值。

excel裡面是怎麼表示1天18時12分28秒這個時間的呢,在excel裡面:1天的時間就用1表示,那麼1小時、1分鐘、1秒就可以通過以下方式計算:

於是1天18時12分28秒就等於1*1+18*1/24+12*1/1440+28*1/86400≈1.75865740740741.

我們把步驟分解一下:

1)從文字格式裡面,把數字取出來,分為天、時、分、秒,如果沒有則設定為0

2)按照計算式將對應的數值計算出來

3)採用自定義公式的方式將其在vba裡面實現

上面的1)、2)兩步用VBA實現出來如下:

Function shijian(str As String) As Double

Dim tian, shi, fen, miao As Double
tian = 0
shi = 0
fen = 0
miao = 0

If InStrRev(str, "天") <> 0 Then
temp = InStrRev(str, "天")
tian = Left(str, InStrRev(str, "天") - 1)
str = Right(str, Len(str) - InStrRev(str, "天"))
End If

If InStrRev(str, "時") <> 0 Then
shi = Left(str, InStrRev(str, "時") - 1)
str = Right(str, Len(str) - InStrRev(str, "時"))
End If

If InStrRev(str, "分") <> 0 Then
fen = Left(str, InStrRev(str, "分") - 1)
str = Right(str, Len(str) - InStrRev(str, "分"))
End If

If InStrRev(str, "秒") <> 0 Then
miao = Left(str, InStrRev(str, "秒") - 1)
str = Right(str, Len(str) - InStrRev(str, "秒"))
End If

shijian = tian + shi / 24 + fen / 60 / 24 + miao / 60 / 60 / 24

End Function  

3)呢,就是如何把這程式碼放到excel中,用起來。

3.1)將程式碼放到vba模組中

3.1.1)在sheet上右鍵,點選檢視程式碼

3.1.2)新增模組

3.1.3)將程式碼複製進去後儲存一下

3.2)在表格中通過公式使用