通過VBA將文字格式的時間轉換為數字格式
阿新 • • 發佈:2020-12-10
後臺系統匯出來的工單歷時資料,是文字格式的,如"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)在表格中通過公式使用