繁体   English   中英

Excel VBA-将“ 2015年2月27日星期五08:45:00 CST”格式化为可用日期

[英]Excel VBA - Formatting “Fri Feb 27 08:45:00 CST 2015” into a usable date

我目前正在建立用于报告目的的数据库。 原始数据将来自将csv发送到共享位置的自动数据源。 我有一些流程,可以将其取出并获取数据,然后将其放置在共享位置,然后有一个excel文档,该文档具有与数据的连接设置,然后将连接至数据并在打开工作簿时刷新。 此过程已完成,但是我遇到的问题是原始数据源正在导出csv,它正在将日期格式设置为“ Fri Feb 27 08:45:00 CST 2015”(例如)。 我需要将此格式设置为“ MM / dd / yyyy hh:mm:ss”。目前,更改供应商的输出格式不是可行的选择。

任何帮助将不胜感激,老实说,我什至不知道从哪里开始,所以我没有代码可发布。 我会说这将在大量行上完成。 例如,可能是B2:B10000

不考虑几个时区:

Sub convertDate()

Dim str As String
Dim arr() As String
Dim mm As String
Dim convDate As String

str = "Fri Feb 27 08:45:00 CST 2015"

arr() = Split(str)

Select Case arr(1)
Case "Jan": mm = "01"
Case "Feb": mm = "02"
Case "Mar": mm = "03"
Case "Apr": mm = "04"
Case "May": mm = "05"
Case "Jun": mm = "06"
Case "Jul": mm = "07"
Case "Aug": mm = "08"
Case "Sep": mm = "09"
Case "Oct": mm = "10"
Case "Nov": mm = "11"
Case "Dec": mm = "12"
End Select

convDate = mm & "/" & arr(2) & "/" & arr(5) & " " & arr(3)

MsgBox (convDate)

End Sub

假设要获取的格式始终相同,则可以使用正则表达式,然后将其重新构建为Date ,然后对其进行格式化:

'Requires reference to Microsoft VBScript Regular Expressions
Sub ParseDateExample()
    testValue = "Fri Feb 27 08:45:00 CST 2015"
    With New RegExp
        .Pattern = ".+\s(.+)\s(\d{1,2})\s(\d{2}:\d{2}:\d{2})\s.+(\d{4})"
        If .Test(testValue) Then
            Dim matches As Object
            Set matches = .Execute(testValue)
            Dim temp As String
            temp = matches(0).SubMatches(0) & "/" & matches(0).SubMatches(1) & "/" & _
                   matches(0).SubMatches(3) & " " & matches(0).SubMatches(2)
            If IsDate(temp) Then
                Debug.Print Format$(CDate(temp), "mm/dd/yyyy hh:nn:ss")
            End If
        End If
    End With
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM