[英]How to get the Date from Time Stamp
我有一个Excel文件,它包含多个工作表的数据。 在那一列有时间戳,如21/6/12 10:33:07:AM。 我的系统日期格式为“m / d / yyyy”
将此转换为日期21/06/2012。 能够得到日期,但它显示错误。 06-12-2021这应该是21-06-2012。 我正在使用以下代码。
例如:26/6/12 11:15:07:AM应该是26/06/2012
21/6/12 10:33:07:AM应该是21/06/2012
Public Sub ConvtDate()
Dim ParseDateTime As Date
Application.ScreenUpdating = False
For Each datcol In ws_Raw2.Range("I2:I65536")
x = InStr(1, datcol, " ", vbTextCompare) - 1
If x > 0 Then
ParseDateTime = DateValue(Left(datcol, x))
datcol.Value = ParseDateTime
End If
Next
Application.ScreenUpdating = True
End Sub
请帮忙知道如何获取日期。
提前致谢。
DateValue
期望将日期作为系统设置的格式的字符串。
从Excel帮助:
如果date是仅包含由有效日期分隔符分隔的数字的字符串,则DateValue会根据您为系统指定的短日期格式识别月,日和年的订单。
由于您的数据是在Day Month Year
而您的系统是Month Day Year
您需要重新构建传递给DateValue
的参数。
这是你的男女同校的重构,还涉及其他一些问题:
Dim
所有变量调Dim
(使用Option Explicit
强制执行此操作) Public Sub ConvtDate()
Dim ParseDateTime As Date
Dim i As Long
Dim x As Long
Dim a() As String
Dim dat As Variant
Dim rng As Range
Application.ScreenUpdating = False
Set rng = Range(Cells(2, 9), Cells(Rows.Count, 9).End(xlUp))
dat = rng.Value
For i = 1 To UBound(dat, 1)
x = InStr(1, dat(i, 1), " ", vbTextCompare) - 1
If x > 0 Then
a = Split(Left(dat(i, 1), x), "/")
ParseDateTime = DateValue(a(1) & "/" & a(0) & "/" & a(2))
' or if you dont know the system data format use
' ParseDateTime = DateSerial(a(2), a(1), a(0))
dat(i, 1) = ParseDateTime
End If
Next
rng = dat
Application.ScreenUpdating = True
End Sub
如果列格式化日期,Excel将自行更改为26/6/12至26/06/2012。 所以
ParseDateTime = Left(datcol, x)
应该这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.