更改日期格式,以便DAYS()公式起作用

问题描述 投票:0回答:1

我正在尝试使用VBA转换表格列中的日期格式,以便我可以在公式中使用它。

该列包含格式为“general”的日期,而不是“date”,如下所示:13/04/2019。因此需要dd / mm / yyyy并将其识别为日期。

我在网上查了一下,很难找到有用的东西。我试过了:

.numberformat = "dd/mm/yyyy"

但它不起作用

这是我正在尝试的代码。

    With wsDormant.ListObjects("Table_Dormant_Stock").ListColumns.Add
        .DataBodyRange.Formula = "=DATE(RIGHT([@[Days Last Sold]],4), MID([@[Days Last Sold]],3,2), LEFT([@[Days Last Sold]],2))"
    End With

'Change date to amount of days
    With wsDormant.ListObjects("Table_Dormant_Stock").ListColumns.Add
        .DataBodyRange.Formula = "=DAYS($C$8,[Days Last Sold])"
         wsDormant.ListObjects("Table_Dormant_Stock").ListColumns("Days Last Sold").DataBodyRange.Value = .DataBodyRange.Value
        .Delete
    End With

我在尝试配方时得到了#value。它需要将单元格格式转换为日期。使用日期的公式似乎不喜欢dd / mm / yyyy中的日期格式。但是对yyyy / mm / dd很满意。

excel vba date format
1个回答
2
投票

您应该首先将“伪日期”转换为“真实”日期。选择单元格并运行:

Sub FixDate()
    Dim d As Date, r As Range, v As String

    For Each r In Selection
        v = r.Text
        r.Clear
        arr = Split(v, "/")
        d = DateSerial(arr(2), arr(1), arr(0))
        r.Value = d
        r.NumberFormat = "dd/mm/yyyy"
    Next r
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.