我有一个宏,它将日期作为文本粘贴到列中,并且我已经在某处阅读过,将文本转换回日期的最佳解决方案是搜索和替换"/"
。
如果我在Excel中手动执行此操作,它就像轻而易举一样工作。但是,当我尝试使用宏执行此操作时,我没有看到单元格正在转换为日期。
这就是宏录制器给我的,也是我尝试使用的:
Range("t_drill[Date]").Replace What:="/", Replacement:="/", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
使用 TextToColumns 转换日期:
这适用于日期格式 DMY,如果您使用不同的日期格式,则必须进行调整。
Range("t_drill[Date]").TextToColumns Destination:=Range("t_drill[Date]"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True
要针对不同的日期格式进行调整,请根据需要进行更改:
MDY :=数组(1, 3(
DMY :=数组(1, 4(
YMD :=数组(1, 5(
MYD :=数组(1, 6(
DYM :=数组(1, 7(
YDM :=数组(1, 8(
尝试将值设置为 CDate 的返回值。这也改变了单元格的格式。
Dim c As Variant: For Each c In Range("t_drill[Date]").Cells
c.Value = CDate(c.Value)
Next c
注意:最初我认为t_drill[日期]是一个单元格。我更新了我的代码,使其适用于多个单元格。