VBA Month()函数

首先,我的英语道歉。 我正在处理一些非常相似的事后macros – 删除基于date的行

但我的date数据是相反的顺序,它从最新到最旧sorting。

Dan Wagner提供的代码并不适合我,因为当我运行代码时,它什么都不做。

我有一个代码在这里工作正常,如果我手动设置月份less于一个值。 .Range("B2").Resize(Lastrow - 1).Formula = "=AND(MONTH(A2)<>4)"

如果A列中的date月份不是当前月份,我希望代码删除行。 所以我试着用.Range("B2").Resize(Lastrow - 1).Formula = "=AND(MONTH(A2)<>Month(Date))"但它只是删除我的头。

所以我想知道是否有任何可以改变月(date)function的数字? 或者如果还有其他最好的方法呢? 看到我下面的完整代码

 Sub ProcessData2() Dim rng As Range Dim Lastrow As Long Dim i As Long With ActiveSheet Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row .Columns(2).Insert .Range("B1").Value = "tmp" .Range("B2").Resize(Lastrow - 1).Formula = "=AND(MONTH(A2)<>Month(Date))" Set rng = .Range("A1").Resize(Lastrow, 2) rng.AutoFilter Field:=2, Criteria1:="=TRUE" On Error Resume Next Set rng = .Range("B2").Resize(Lastrow - 1).SpecialCells(xlCellTypeVisible) On Error GoTo 0 If Not rng Is Nothing Then rng.EntireRow.Delete .Columns(2).Delete End With End Sub 

看起来没问题,试着把你的公式改成:

 .Range("B2").Resize(Lastrow - 1).Formula = "=MONTH(A2)<>MONTH(TODAY())"