代码之家  ›  专栏  ›  技术社区  ›  Eitel Dagnin

VBA-应用筛选器显示从今天起的特定日期的记录

  •  0
  • Eitel Dagnin  · 技术社区  · 8 年前

    我有一个日期过滤器,用于显示除前几天记录外的所有记录,然后在应用过滤器后删除“特殊/可见”单元格。这使我只能查看前一天的数据。

    下面是应用过滤器的代码行:

    .Columns(iCol).AutoFilter Field:=1, Criteria1:="<>" & CLng(DateAdd("d", -1, Date))
    

    我已经意识到,这个宏不会在周末运行,所以在周一你需要显示周五、周六和周日的记录;星期日

    我以为这会奏效:

    .Columns(iCol).AutoFilter Field:=1, Criteria1:="<>" & CLng(DateAdd("d", -1, Date)) & CLng(DateAdd("d", -2, Date)) & CLng(DateAdd("d", -3, Date))
    

    然而,它不起作用。。这几乎就像过滤器只查找前一天,而不包括其他两天作为“标准”。

    我知道周五有数据,所以删除后,应该会显示数据,但是,所有记录都会被删除。

    注意:我本可以在我的标题中明确指出要寻找3天,但如果3天变成4天、5天或6天等,我希望能够再次使用此代码。。

    2 回复  |  直到 8 年前
        1
  •  1
  •   learnAsWeGo    8 年前

    您可以添加其他条件以从周一搜索中删除周一:

    Sheets("Sheet3").Range("A1:A10").AutoFilter Field:=1, Criteria1:=">" & CLng(DateAdd("d", -3, Date)), Criteria2:="<>" & CLng(DateAdd("d", 0, Date))
    

    下面是我制作的一个示例的代码:

    Sub newnew()
    
        Dim iCol As Range
            Set iCol = Sheets("Sheet2").Range("A10:B115")
    
        Debug.Print CLng(DateAdd("d", 0, Date))
    
        If Weekday(Now()) = vbMonday Then
            Sheets("Sheet3").Range("A1:A10").AutoFilter Field:=1, Criteria1:=">" & CLng(DateAdd("d", -3, Date)), Criteria2:="<>" & CLng(DateAdd("d", 0, Date))
        Else
            Sheets("Sheet3").Range("A1:A10").AutoFilter Field:=1, Criteria1:=">" & CLng(DateAdd("d", 1, Date))
        End If
    
    End Sub
    

        2
  •  1
  •   Harassed Dad    8 年前
     .Columns(iCol).AutoFilter Field:=1, Criteria1:="<" &  CLng(DateAdd("d", -3, Date))
    

    如果在周一运行,将获得周五之前的所有天-我猜您是在其他地方测试一周中的某一天

    推荐文章