查找和replacedate的vba更改格式

我有一系列date单元格,包含必须replace的值。 一旦我使用一般的查找和replace – 它工作顺利。 当我在VBA中执行时,单元格的格式会发生变化,date会转换为错误的格式,例如2015年10月12日(10月12日),但是会变成10/12/2015(12月10日)。 代码如下:

Sub find_replace() ActiveSheet.Range("T1", Range("T1").End(xlToRight).Offset(0, -2)).Select With Selection .NumberFormat = "dd/mm/yyyy" .Replace What:="P.", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False .Replace What:=".", Replacement:="/", LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End With End Sub 

请提出build议如何摆脱这个恼人的问题。 谢谢。

date()我是意大利人,总是与date争吵。如果你想转换的date一直如P.01.10.2015到10月1日,请尝试下面的代码,否则改变right(x,x)的开始/结束right(x,x)mid(x,x,x)

 Sub find_replace() Dim cell As Range Dim yr As String, mnt As String, dy As String Dim d As Date For Each cell In ActiveSheet.Range("T1", Range("T1").End(xlToRight).Offset(0, -2)) yr = Right(cell, 4) mnt = Mid(cell, 6, 2) dy = Mid(cell, 3, 2) d = DateSerial(yr, mnt, dy) Range(cell.Address) = d Next cell End Sub 

这是由于.NumberFormat 。 尝试将其更改为.NumberFormat = "mm/dd/yyyy"

编辑:另外,也许只是注释掉/删除该行,如果这是完全没有必要的。

编辑2:以上不是问题。 如果在运行macros并以dd/mm/yyyy格式显示date之后,如果按文本分栏? 突出显示date,转到数据 – >文本到列,select“分隔符”并保留为“制表符”,但在下一个屏幕(步骤3或3)中select“列数据格式”作为“date:MDY”,并点击“完成”。

以下是我之前评论的循环样本:

 Sub ParseDates() Dim vData Dim rData As Range Dim x As Long Dim y As Long Dim stemp As String Set rData = ActiveSheet.Range("T1", Range("T1").End(xlToRight).Offset(0, -2)) vData = rData.Value2 For x = LBound(vData, 1) To UBound(vData, 1) For y = LBound(vData, 2) To UBound(vData, 2) stemp = Replace$(Replace$(vData(x, y), "P.", ""), ".", "/") If IsDate(stemp) Then vData(x, y) = CDate(stemp) Next y Next x rData.Value2 = vData End Sub