我正在使用excel来分析数据库中的一些数据。我从MySQL数据库通过ODBC驱动程序获取数据。有一些Cols有时间值。到目前为止没问题。我的格式是:
hh:mm:ss,000
应用格式是没有问题的,我用一个宏来刷新单元格,该宏从excel应用“text to column”函数(相同的效果是标记整个col并按Enter键,它重新进入值并应用格式)。现在我的问题 - 如果我第二次点击此功能或只是点击手动输入,它会删除小数位,看看:
在:
后:
有人有想法吗?
答案 0 :(得分:0)
使用美国语言环境的假设(小数点 。 是小数分隔符。)
假设我们有一列 Text 值,例如:
以下宏会将它们转换为格式“hh:mm:ss.000”
的真实Excel时间在美国语言环境中,此格式“hh:mm:ss,000”不合法:
Sub fixData()
Dim r As Range, s As String
Dim hrs As Long, mins As Long, secs As Long
Dim milli As Long, d As Double
Selection.NumberFormat = "hh:mm:ss.000"
For Each r In Selection
s = r.Text
milli = CLng(Right(s, 3))
hrs = CLng(Left(s, 2))
mins = CLng(Mid(s, 4, 2))
secs = CLng(Mid(s, 7, 2))
d = hrs / (24#) + mins / (24# * 60) + secs / (24# * 60 * 60) + milli / (24# * 60 * 60 * 1000)
r.Value = d
Next r
End Sub
然后:
请注意,处理后,公式栏会不显示毫秒,尽管它在那里。