通过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)在表格中通过公式使用

 

posted @ 2020-12-10 21:10  三十而志于学  阅读(2811)  评论(0)    收藏  举报