尝试重新格式化表格范围内格式不正确的日期,以便我可以按日期排序。我遇到运行时错误'13',键入不匹配,代码行为“ Range(“ B”&y).value“。
我知道该公式有效,因为我已经在实际表中尝试过该公式,并且该表中还有另一个类似且有效的公式。我已经尝试过在实际表中使用此公式的几个版本,但是当我将其作为宏运行时,仍然会遇到运行时错误,键入不匹配
'Purchase Date Formula
Dim y As Integer
Dim LastRowUsed As Integer
LastRowUsed = Worksheets("AFOR").Cells(Rows.Count, "A").End(xlUp).Row
For y = 2 To LastRowUsed
Range("B" & y).Value = " =MID([@[purchase-date]],6,2)&" / "&MID([@[purchase-date]],9,2)&" / "&LEFT([@[purchase-date]],4)"
Next y
PurchaseDate
01/24/2019
购买日期
2019-01-24T13:32:18 + 00:00
试图从底部(购买日期)的数据中获得最高结果(PurchaseDate)。
答案 0 :(得分:0)
我不喜欢像 [@ [购买日期]] 这样的地址,但是在我的试用中,它在2015年产生了一个错误。因此,我更喜欢一种更常规的方法,您可以简单地阅读日期并将其写入所需的单元格中。为了达到良好的效果,我添加了一行代码以可能需要的方式对其进行格式化。请尝试。
Private Sub DateFromText()
Dim R As Long
Dim LastUsedRow As Long
Dim Tmp As Variant
With Worksheets("AFOR")
LastUsedRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For R = 2 To LastUsedRow
Tmp = Left(.Cells(R, "C").Value, 10)
If IsDate(Tmp) Then
With .Cells(R, "B")
.Value = CDate(Tmp)
.NumberFormat = "mm/dd/yyyy"
End With
End If
Next R
End With
End Sub
答案 1 :(得分:0)
看到您发现的注释,但是如果其他人遇到这种问题,则会增加三个问题:
1-范围对象中的值可以用公式属性替换
2-应该避免公式的初始空格
3-在vba定义的公式中使用引号
'Purchase Date Formula
Dim y As Integer
Dim LastRowUsed As Integer
LastRowUsed = Worksheets("AFOR").Cells(Rows.Count, "A").End(xlUp).Row
For y = 2 To LastRowUsed
Range("B" & y).Formula = "=MID([@[purchase-date]],6,2)&"" / ""&MID([@[purchase-date]],9,2)&"" / ""&LEFT([@[purchase-date]],4)"
Next y
如果有帮助,请标记此答案。