我希望你会没事的,请你提一下如何转换这个
10.28.2014 16:00:00
进入
10/28/2014 4:00 PM.
我想转换整个列。 此外,如果你能提到很多帮助的VBA代码。
提到的excel文件是通过从客户导入csv文件创建的。我的国家是沙特阿拉伯,它具有不同的DateTime格式d/m/y
,我还需要将处理后的excel文件导入Access数据库。
由于
答案 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 answer和this answer。