如何将Excel文本转换为日期和时间
我的一个Excel列包含如下数据:如何将Excel文本转换为日期和时间,excel,vba,Excel,Vba,我的一个Excel列包含如下数据:2011年2月15日凌晨2:00:00。我需要将其转换为两列:日期和时间。我尝试了Cdate,DateValue,留下的函数都给出了类型不匹配错误。请提供帮助。要将一个日期时间字符串转换为两个单独的字符串: Public Sub splitDateTime() Dim d As String, t As String d = DateValue("2/15/2011 2:00:00 AM") t = TimeValue("2/15/2
2011年2月15日凌晨2:00:00
。我需要将其转换为两列:日期和时间。我尝试了Cdate
,DateValue
,留下的函数都给出了类型不匹配错误。请提供帮助。要将一个日期时间字符串转换为两个单独的字符串:
Public Sub splitDateTime()
Dim d As String, t As String
d = DateValue("2/15/2011 2:00:00 AM")
t = TimeValue("2/15/2011 2:00:00 AM")
MsgBox d '"2/15/2011" (result format varies based on Regional Settings)
MsgBox t '"2:00:00 AM"
End Sub
要将包含DataTime字符串的列中的所有单元格转换为2列(标题除外),请执行以下操作:
Option Explicit
Public Sub splitDateTime()
Dim str As String, cel As Range, ws As Worksheet, lr As Long
Set ws = ActiveSheet
lr = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For Each cel In ws.Range("C1:C" & lr)
If cel.Row = 1 Then
With cel
.Value2 = "Date"
.Offset(0, 1).Value2 = "Time"
End With
Else
str = cel.Value2
With cel
.Value2 = Format(DateValue(str), "ddd, mmm dd yyyy")
.Offset(0, 1).Value2 = Format(TimeValue(str), "hh:mm:ss AmPm")
End With
End If
Next
ws.Range("C1:D" & lr).EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
要将一个日期时间字符串转换为两个单独的字符串,请执行以下操作:
Public Sub splitDateTime()
Dim d As String, t As String
d = DateValue("2/15/2011 2:00:00 AM")
t = TimeValue("2/15/2011 2:00:00 AM")
MsgBox d '"2/15/2011" (result format varies based on Regional Settings)
MsgBox t '"2:00:00 AM"
End Sub
要将包含DataTime字符串的列中的所有单元格转换为2列(标题除外),请执行以下操作:
Option Explicit
Public Sub splitDateTime()
Dim str As String, cel As Range, ws As Worksheet, lr As Long
Set ws = ActiveSheet
lr = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For Each cel In ws.Range("C1:C" & lr)
If cel.Row = 1 Then
With cel
.Value2 = "Date"
.Offset(0, 1).Value2 = "Time"
End With
Else
str = cel.Value2
With cel
.Value2 = Format(DateValue(str), "ddd, mmm dd yyyy")
.Offset(0, 1).Value2 = Format(TimeValue(str), "hh:mm:ss AmPm")
End With
End If
Next
ws.Range("C1:D" & lr).EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
这是我的代码,它仍然给出了类型不匹配错误。Option Explicit Sub splitDateTime()Dim cvalue Dim curr_date As String Columns(“C”)。选择cvalue=Columns(“C”)。Value curr_date=DateValue(cvalue)MsgBox curr_date End Sub提供的代码旨在向您展示如何执行此操作的示例。请将您的问题编辑得更具体一些,比如“我需要将C列中的所有单元格从完整的日期和时间格式拆分为日期值,将C列中的每个单元格和时间值拆分为D列中的相应单元格”我确实测试了您的代码,它工作得非常完美。然而,在我的例子中,C列承载日期时间数据,如2011年2月14日凌晨2:00:00。我编辑了答案,将C列拆分为C列和D列。请调整代码以满足您的具体要求,因为您没有提到第二列应该是我的代码,它仍然会给出类型不匹配错误。Option Explicit Sub splitDateTime()Dim cvalue Dim curr_date作为字符串列(“C”)。选择cvalue=列(“C”)。Value curr_date=DateValue(cvalue)MsgBox curr_date End子提供的代码旨在向您展示如何执行此操作的示例。请将您的问题编辑得更具体一些,比如“我需要将C列中的所有单元格从完整的日期和时间格式拆分为日期值,将C列中的每个单元格和时间值拆分为D列中的相应单元格”我确实测试了您的代码,它工作得非常完美。然而,在我的例子中,C列承载日期时间数据,如2011年2月14日凌晨2:00:00。我编辑了答案,将C列拆分为C列和D列。请调整代码以符合您的具体要求,因为您没有提到第二列应该是什么