【发布时间】:2011-10-29 16:37:02
【问题描述】:
我有一个包含混合格式日期的日期列。例如:
一个
21.03.1990
1990 年 3 月 21 日
所以,基本上一列中有两种不同的格式:dd.mm.yyyy 和 mm/dd/yyyy。我正在尝试编写一个 VBA 脚本来将列中所有日期的格式更改为yyyy-mm-dd。这就是我到目前为止所得到的:
Sub changeFormat()
Dim rLastCell As Range
Dim cell As Range, i As Long
Dim LValue As String
i = 1
With ActiveWorkbook.Worksheets("Sheet1")
Set rLastCell = .Range("A65536").End(xlUp)
On Error Resume Next
For Each cell In .Range("A1:A" & rLastCell.Row)
LValue = Format(cell.Value, "yyyy-mm-dd")
.Range("B" & i).Value = LValue
i = i + 1
Next cell
On Error GoTo 0
End With
End Sub
我知道这不是一段优雅的代码,但我是 VBA 的初学者,所以请原谅我。
该代码的问题在于它只是将未更改的 A 列重写为 B 列,当我将 Format 函数中的参数从 yyyy-mm-dd 更改为 dd/mm/yyyy 它有效,但仅适用于格式为 mm/dd/yyyy 的日期,并留下 dd.mm.yyyy原封不动。如有任何建议,我将不胜感激。
【问题讨论】:
-
据我所知“21.03.1990”不是日期格式,它只是以这种方式输入的文本。您可以检查单元格格式并确认吗?如果是文本,则更改日期格式不会对内容产生任何影响。
-
恕我直言,VBA 可能比它的价值更麻烦。这个任务可以用一个相当简单的 Excel 公式来完成。