Excel日期&时间转换

时间:2014-11-09 08:50:53

标签: excel vba

我希望你会没事的,请你提一下如何转换这个

10.28.2014 16:00:00 进入

10/28/2014 4:00 PM.

我想转换整个列。 此外,如果你能提到很多帮助的VBA代码。


提到的excel文件是通过从客户导入csv文件创建的。我的国家是沙特阿拉伯,它具有不同的DateTime格式d/m/y,我还需要将处理后的excel文件导入Access数据库。

由于

2 个答案:

答案 0 :(得分:2)

如果您的单元格为Date格式,只需转到Format Cells...对话框并设置如下自定义格式:

mm.dd.yyyy h AM/PM

如果单元格为Text格式,则可以使用此公式转换此文本(假设所有值都是19个字符长):

=LEFT(A1,11)&IF(MOD(VALUE(MID(A1,12,2)),12)=0,12,MOD(VALUE(MID(A1,12,2)),12)&IF(VALUE(MID(A1,12,2))<12," AM"," PM")

答案 1 :(得分:0)

以下是VBA中的代码段,它将阿塞拜疆日期格式m.d.y转换为ar-SA日期格式d/m/y。使用参数&#34; A&#34;运行FixDates应该将文本m.d.yy hh:mm:ss转换为A列中所有单元格的日期值d/m/yyyy hh:mm:ss。它使用VBScript类中的RegExp。

Option Explicit

Sub ConvertDates()
   Call FixDates("A")
End Sub

Sub FixDates(column As String)
    Dim cell As Range
    Dim lastRow As Long

    lastRow = Range(column & Rows.Count).End(xlUp).Row
    For Each cell In Range(column & "1:" & column & lastRow)
        If InStr(cell.Value, ".") <> 0 Then
          cell.Value = DateValue(RegexReplace(cell.Value, _
          "(\d{1,2})\.(\d{1,2})\.(\d{2,4})", "$2/$1/$3"))
        End If
        cell.NumberFormat = "d/m/yyyy h:mm AM/PM"
    Next    
End Sub

Function RegexReplace(ByVal text As String, _
                      ByVal replace_what As String, _
                      ByVal replace_with As String) As String

    Dim RE As Object
    Set RE = CreateObject("vbscript.regexp")
    RE.Pattern = replace_what
    RE.Global = True
    RegexReplace = RE.Replace(text, replace_with)
End Function

如果您需要其他格式,只需更改一行:

 cell.NumberFormat = "d/m/yyyy h AM/PM"

我修改并使用了this answerthis answer

相关问题