0

我无法更改为日期格式。我有包含不同日期的单元格,但并非所有日期都格式化为日期。其中之一是“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 消失了,但没有其他变化。

4

2 回答 2

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

希望这有效。

于 2013-10-01T06:55:30.133 回答
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 工作表中对您的单元格/范围的引用在哪里。

于 2013-09-30T09:19:53.307 回答