TextToColumnsdatestring与时间

Excel 2010。我正在Excel中导入csv文件进行进一步处理。 不幸的是,在csvdate字段中,date以与我的电脑默认格式(“mm / dd / yyyy”)不同的格式(“dd / mm / yyyy”)表示。 所以我需要将每个date字段(列)转换为我的格式,然后才能开始处理数据。

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 

(假定datestring在列范围A1:A10中)

…正确地将string“1/2/2017”转换为2017年2月1日的date或将string“25/2/2017”转换为2017年2月25日的date。

但是,有些字段不是纯datestring,但也包含时间信息。 例如2017年2月1日上午9:30的“1/2/2017 09:30:00”或2017年2月25日上午9:30的“2017/2/2 09:30:00”。

不幸的是上面的例子macros中使用的TextToColumns方法似乎不再有效。 “1/2/2017 09:30:00”错误地转换为2017年1月2日上午9:30,“2017/2/2 09:30:00”不转换。这是正常的方式,因为字段信息(xlDMYFormat)不再精确地描述字段格式。

我的问题:有没有办法使用TextToColumnsstring包含时间信息? 另外还有其他的方法来转换所有的列的date/时间string,而不循环通过每个单元格(这很容易,但很慢)?

要以时间格式使用TTC,您需要拆分Time(分隔符=空格)。 这将与您的数据工作?

您还需要一个处理stringdate或date/时间的方法。

最简单的办法是做一个真正的导入(数据►获取外部数据►从文本)并正确处理数据,然后写入工作表。 这将需要能够使用空间作为分隔符。

在这里输入图像说明


在这里输入图像说明


在这里输入图像说明


在这里输入图像说明


在这里输入图像说明


请注意,上次屏幕截图中的date已被转换为MDY的“正常”设置,因此它们都代表二月份的date。

如果这不起作用,让我知道,因为我有一个macros应该能够以混合格式转换混合date/时间。

也许你可以把date时间字段作为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