我无法更改为日期格式。我有包含不同日期的单元格,但并非所有日期都格式化为日期。其中一个是“yy-mm-dd”,例如“13-04-08”,但它被格式化为General。 我正在使用此代码:
xCell = Format(xCell, "yyyy-mm-dd")
问题是excel不能判断“13”或“08”是否是“yyyy”所以它不会改变任何东西。我该如何解决这个问题?在更改日期之前,我是否需要告诉excel哪些数字是一年,我该怎么做?它可以包含在Format方法中吗?
修改 我想我需要解释整个事情,因为问题似乎在其他地方。 包含日期的单元格从开始看起来像这样,格式为General:
13-05-06 A
13-05-21 A
...
我使用以下代码删除了不需要的“A”:
Sub rensa()
Dim Found As Range
For Each xCell In Range("D2:D999")
If IsEmpty(xCell.Value) Then Exit For
Set Found = xCell.Find(What:="A", LookIn:=xlValues, LookAt:=xlPart)
If Found Is Nothing Then
Else
xCell.Value = Left(xCell.Value, Len(xCell.Value) - 1)
End If
Next xCell
End Sub
我已尝试使用这些代码将单元格格式设置为日期:
Range("D2:D999").NumberFormat = "yyyy-mm-dd"
Range("D2:D999").NumberFormat = "m/d/yyyy"
我也尝试在For循环中实现它们,如下所示:
Sub rensa()
Dim Found As Range
For Each xCell In Range("D2:D999")
If IsEmpty(xCell.Value) Then Exit For
Set Found = xCell.Find(What:="A", LookIn:=xlValues, LookAt:=xlPart)
If Found Is Nothing Then
xCell.NumberFormat = "yyyy-mm-dd"
Else
xCell.Value = Left(xCell.Value, Len(xCell.Value) - 1)
xCell.NumberFormat = "yyyy-mm-dd"
End If
Next xCell
End Sub
但是这也不是我想要的。一切都使结果看起来像这样,仍然格式化为General:
13-05-06
13-05-21
...
所以A已经消失,但没有其他变化。
答案 0 :(得分:1)
我刚刚在你的代码中添加了一些内容。请参阅以下带注释的行
Sub rensa()
Dim Found As Range
Dim xcell As Range
Dim date_val As Date
For Each xcell In Range("D1:D999")
If IsEmpty(xcell.Value) Then Exit For
Set Found = xcell.Find(What:="A", LookIn:=xlValues, LookAt:=xlPart)
If Found Is Nothing Then
Else
xcell.Value = Left(xcell.Value, Len(xcell.Value) - 1)
date_val = xcell.Value 'asign the value to date variable carrier
xcell.Value = date_val 'return it to the cell
End If
Next xcell
Range("D1:D999").NumberFormat = "yyyy-mm-dd" 'do the formatting
End Sub
希望这有效。
答案 1 :(得分:0)
相当简单的解决方案是使用Mid, Left, Right functions
解析您的数据。但是,它并不像人们期望的那样有效,但可能会有所帮助。所以,代码可以如下:
xCell = "13-04-08"
xCell = Format(DateSerial(Left(xCell,2),mid(xCell,4,2),Right(xCell,2)),"yyyy-mm-dd")
因此得到2013-04-08
。
编辑要设置适当的单元格格式,请尝试以下操作之一:
Range("A1").NumberFormat = "yyyy-mm-dd"
或
Range("A1").NumberFormat = "m/d/yyyy"
Range("A1")
在Excel工作表中引用您的单元格/范围。