Exceldate和时间转换

我希望你会好起来的,请你提一下如何转换

10.28.2014 16:00:00

 10/28/2014 4:00 PM. 

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


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

谢谢

这是VBA中的代码片段,它将阿塞拜疆date格式mdy转换为ar-SAdate格式d/m/y 。 使用参数“A”运行FixDates应将文本mdyy hh:mm:ss转换为date值d/m/yyyy hh:mm:ss用于列A中的所有单元格。它使用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" 

我修改并使用了这个答案和这个答案 。

如果您的单元格是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")