Excel 2010.我正在excel中导入csv文件以进行进一步处理。不幸的是,在csv日期字段中,日期以与我的PC的默认格式(“mm / dd / yyyy”)不同的格式(“dd / mm / yyyy”)表示。因此,在开始处理数据之前,我需要将每个日期字段(列)转换为我的格式。
Range.TextToColumns方法就像魅力一样:
Sub convertDateColumn()
Dim myColumn As Range
Set myColumn = Range("A1:A10")
myColumn.TextToColumns Destination:=myColumn.Cells(1), DataType:=xlDelimited, FieldInfo:=Array(0, xlDMYFormat)
End Sub
(假设日期字符串在列范围A1:A10中)
...将字符串“1/2/2017”正确转换为2017年2月1日或字符串“2017年2月25日”到2017年2月25日。
但是,某些字段不是纯日期字符串,但也包含时间信息。例如2017年2月1日上午9:30或2017年2月25日上午9:30“25/2/2017 09:30:00”的“1/2/2017 09:30:00”。
不幸的是,上面示例宏中使用的TextToColumns方法似乎不再起作用了。 “1/2/2017 09:30:00”错误地转换为2017年1月2日上午9:30,“25/2/2017 09:30:00”未转换。这是正常的,因为字段信息(xlDMYFormat)不再准确描述字段格式。
我的问题:有没有办法将TextToColumns与包含时间信息的字符串一起使用?或者有其他方法来转换所有列的日期/时间字符串而不循环遍历每个单元格(这很容易但很慢)?
答案 0 :(得分:2)
也许您只需将日期时间字段设为xlGeneralFormat
,然后在处理TextToColumns
之后格式化第一列:
myColumn.NumberFormat = "mm/dd/yyyy hh:mm:ss"
例如:
Sub convertDateColumn()
Dim myColumn As Range
Set myColumn = Range("A1:A10")
myColumn.TextToColumns Destination:=myColumn.Cells(1), DataType:=xlDelimited, FieldInfo:=Array(0, xlGeneralFormat)
' update format
myColumn.NumberFormat = "mm/dd/yyyy hh:mm:ss"
End Sub
答案 1 :(得分:2)