VBA Month()函数

时间:2017-04-19 09:39:40

标签: excel vba excel-vba date

首先,为我的英语道歉。我正在处理与发布Macro - delete rows based on date

非常相似的内容

但我的日期数据顺序相反,从最新到最旧排序。

Dan Wagner提供的代码对我没有用,因为当我运行代码时它没有做任何事情。

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

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

所以我想知道是否有什么可以将月份(日期)功能更改为数字?或者,如果还有其他最佳方式吗? 请参阅下面的完整代码

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

1 个答案:

答案 0 :(得分:0)

看起来不错,只需尝试将公式更改为:

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