如何模拟VBA中的excel公式自动运行

所以我得到以下格式的date:201603

它需要重新安排到03/2016。

如果这在单元格A1:201603

这是在单元格B1: =RIGHT(A1,2) & "/" & LEFT(A1,4)

当用作公式时,重新排列会发生得很好。 我遇到的问题是将其放入VBA,以便它将自动运行格式不正确的数据转储。

我的代码似乎得到一个不匹配的错误,我真的不知道这个问题。

所有的反馈意见。

 Sub format () initial_date = Range ("A1").Value Dim Publish_date As Date publish_date = DateValue(Mid(initial_date,1,4) & "/" & Mid(initial_date,5,2)) Range("A1").Value = publish_date End Sub 

我正在使用的屏幕截图

你想在vba中使用DATESERIAL(),然后把一个数字格式应用到单元格中:

 Sub format() Dim initial_date As String Dim Publish_date As Date initial_date = Range("A1").value Publish_date = DateSerial(Mid(initial_date, 1, 4), Mid(initial_date, 5, 2), 1) Range("A1").value = Publish_date Range("A1").NumberFormat = "mm/yyyy" End Sub 

并遍历整个列:

 Sub format() Dim initial_date As String Dim Publish_date As Date Dim lastrow As Long With ActiveSheet lastrow = .Range("A" & .Rows.count).End(xlUp).Row For i = 1 To lastrow If IsDate(.Cells(i, 1)) Then .Cells(i, 1).NumberFormat = "mm/yyyy" Else initial_date = .Cells(i, 1).value Publish_date = DateSerial(Mid(initial_date, 1, 4), Mid(initial_date, 5, 2), 1) .Cells(i, 1).value = Publish_date .Cells(i, 1).NumberFormat = "mm/yyyy" End If Next i End With End Sub 

如果你确信整列的格式是yyyymm那么你可以一次完成整个列:

 Sub format() Dim lastrow As Long With ActiveSheet lastrow = .Range("A" & .Rows.count).End(xlUp).Row .Range("A1:A" & lastrow) = .Evaluate("Index(DATE(Mid(A1:A" & lastrow & ",1,4),Mid(A1:A" & lastrow & ",5,2),1),)") .Range("A1:A" & lastrow).NumberFormat = "mm/yyyy" End With End Sub