Excel VBA - 替换表格列中的文本



我有一个宏,它将日期作为文本粘贴到列中,并且我已经在某处阅读过,将文本转换回日期的最佳解决方案是搜索和替换"/"

如果我在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[日期]是一个单元格。我更新了我的代码,使其适用于多个单元格。

最新更新