我正在尝试使用VBA在表列中转换日期格式,以便可以在公式中使用它。
此列包含格式为“一般”而不是“日期”的日期,看起来像这样: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感到满意。
答案 0 :(得分: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