繁体   English   中英

Excel VBA上的日期过滤器

[英]Date filter on Excel VBA

我在网上搜索了所有内容,但找不到任何可以适当帮助我编写代码的内容。

我需要的很简单,但是我仍然找不到。

*情况->每天,在我公司中,我们都会收到按实际月份累积的销售报告。 因为我有自己的工作簿,所以每天我只能过滤所需的信息并将其粘贴到我的工作簿中。 星期一是星期一,我们从星期五和星期六开始收到销售信息。 我正在尝试编写一些代码,以便仅在昨天(如果不是星期一)进行过滤,并在星期五和星期六进行过滤,以防万一。

第D栏包含我要过滤的日期

因为今天是星期四,所以我将if条件设置为vbthursday以便进行测试。

sabado =星期六; 星期五= sexta;

Sub Data()
Dim yesterday As String


If Weekday(Date, vbThursday) = 1 Then

Dim sabado As String
Dim sexta As String
Range("D1").Select
Selection.AutoFilter
sabado = Format(Date - 2, "dd/mm/yyyy")
sexta = Format(Date - 3, "dd/mm/yyyy")

ActiveSheet.Range("$A$1:$E$11").AutoFilter Field:=4, Operator:= _
xlFilterValues, Criteria1:="=" & sabado, Criteria2:="=" & sexta



Else

Range("D1").Select
Selection.AutoFilter
yesterday = Format(Date - 1, "dd/mm/yyyy")
ActiveSheet.Range("$A$1:$E$11").AutoFilter Field:=4, Operator:= _
xlFilterValues, Criteria1:="=" & yesterday



End If

实际上,if条件在起作用,它可以识别何时为vbMonday(在测试案例中为vbThursday),何时不工作。 else条件也可以正常工作,它会像应该过滤一样进行过滤。 问题是,当宏进入if条件时,它不能正确过滤。 它一直运行到最后,并且没有任何错误。

有人帮助:(

这样的事情怎么样?

Sub Data()
    Dim datesToFilter()

    If Weekday(Date, vbMonday) = 1 Then
        datesToFilter = Array(Date - 2, Date - 3)
    Else
        datesToFilter = Array(Date - 1)
    End If

    ActiveSheet.Range("$A$1:$E$11").AutoFilter Field:=4, Operator:= _
    xlFilterValues, Criteria1:=datesToFilter

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM