我正在使用将某些数据导出为CSV格式的应用。但是,日期列在原始数据中格式不正确,并且包含年份的不必要的尾随字符,这会阻止Excel在导入后正确解释它。
如果我在列上手动运行“查找和替换”,则值会自动识别为日期。但是,如果我将操作记录为宏,并再次运行,则会删除尾随字符,但列中的数据将保留为文本,而不是日期。
这是VBA代码:
Sub formatDate()
Columns("A:A").Select
Selection.Replace What:=" г.", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
日期的区域格式为DD.MM.YYYY
。此外,如果我只是编辑任何结果单元格(F2)并按Enter键而不进行任何其他操作,Excel将切换为正确的格式。
示例数据:
4 март 2017 г.
4 март 2017 г.
3 март 2017 г.
1 март 2017 г.
28 февруари 2017 г.
27 февруари 2017 г.
27 февруари 2017 г.
26 февруари 2017 г.
26 февруари 2017 г.
答案 0 :(得分:2)
使用TextToColumns快速去掉尾随字符并转换为日期。
使用固定的dd.mm.yyyy格式的文本看似日期,
with selection
.TextToColumns Destination:=.cells(1, 1), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, xlDMYFormat), Array(10, xlSkipColumn))
.numberformat = "dd.mm.yyyy"
end with
在日期之后和尾随文本之前显示空格的文本 - 看起来像日期
With Selection
.TextToColumns Destination:=.Cells(1, 1), DataType:=xlDelimited, ConsecutiveDelimiter:=True, _
Tab:=False, Semicolon:=False, Comma:=False, Space:=True, Other:=False, _
FieldInfo:=Array(Array(1, xlDMYFormat), Array(2, xlSkipColumn))
End With
如果TextToColumns为您提供保加利亚月份名称(VBA非常以US-EN为中心),则只需在现有代码中添加一行,并可选择设置单元格格式。
with Selection
.Replace What:=" г.", Replacement:=vbNullString, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.value = .value2
.numberformat = "dd.mm.yyyy"
end with
我在这里使用Selection
(not particularly recommended),但您应该可以轻松转换。