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")