excel - TextToColumns 用于带有时间的日期字符串

标签 excel date-conversion vba

Excel 2010。我正在 Excel 中导入 csv 文件以进行进一步处理。不幸的是,在 csv 日期字段中,日期的表示格式(“dd/mm/yyyy”)与我的电脑的默认格式(“mm/dd/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 日,或将字符串“25/2/2017”正确转换为日期 2017 年 2 月 25 日。

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

不幸的是,上面示例宏中使用的 TextToColumns 方法似乎不再起作用。 “1/2/2017 09:30:00”被错误地转换为 2-Jan-2017 的上午 9:30,而“25/2/2017 09:30:00”则未被转换。这在某种程度上是正常的,因为字段信息(xlDMYFormat)不再准确描述字段格式。

我的问题:有没有办法将 TextToColumns 与包含时间信息的字符串一起使用?或者,还有其他方法可以转换所有列的日期/时间字符串,而无需循环遍历每个单元格(这很简单但很慢)?

最佳答案

要使用带有时间格式的 TTC,您需要分割时间(分隔符 = 空格)。这适用于您的数据吗?

您还需要一种处理字符串日期或日期/时间的方法。

最简单的方法是进行真正的导入(数据►获取外部数据►从文本)并在数据写入工作表之前正确处理数据。这需要能够使用空格作为分隔符。

enter image description here

<小时/>

enter image description here

<小时/>

enter image description here

<小时/>

enter image description here

<小时/>

enter image description here

<小时/>

请注意,最后一个屏幕截图中的日期已转换为我的 MDY“正常”设置,因此它们都代表二月日期。

如果这不起作用,请告诉我,因为我有一个宏应该能够以混合格式转换混合日期/时间。

关于excel - TextToColumns 用于带有时间的日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43289476/

相关文章:

c# - 如何在浏览器中打开 Excel 中的超链接

c# - Unix 时间戳(以秒为单位)到 C# DateTime 不是 UTC

python - 从感知日期时间到时间戳的转换再返回一个小时?

vba - 使用 VBA 代码将 VBA 代码从一个工作表复制到另一个工作表

excel - 使用每个文件打开 Excel 2010 的新实例

excel - 我们发现 'FileName.xlsx' 中的某些内容存在问题。你想让我们尽可能多地恢复吗?

sql-server - 如何以与 SQL Server 中相同的顺序将列从 SQL 导入 Excel?

java - 在将 String 转换为 Date 时,java.util.Date 和 java.sql.Date 之间存在歧义

sql - 如何在 Excel 的 VBA 中使 ADODB.Connection 持久化?

vba - Excel 在尝试保存时无法使用可用资源完成此任务