美好的一天,
你能帮我解决一下我发现和编辑过的代码吗?它应该过滤列O,并且仅显示日期之前或之前的日期。请注意,单元格AC2显示今天的日期,但我甚至无法播放代码。
With Sheets(1)
MyVal = Application.WorksheetFunction.WorkDay(Sheets(1).Range("AC2").Value)
Sheets(1).Range("A1:AA1").AutoFilter Field:=15, Criteria1:="<=" & MyVal
答案 0 :(得分:7)
如果我理解正确,下面应该可以解决问题。根据计算机的系统时间,只要代码运行,它就会过滤显示当前日期之前的日期:
Sub DateFilter()
Sheets(1).Range("A1:AA1").AutoFilter Field:=15, Criteria1:="<" & Date
End Sub
如果您希望今天加入,请更改“&lt;”到“&lt; =”。 “日期”是引用当前日期的VBA方式。它使用您计算机的系统时间。
WorkDay函数用于在另一个日期之后查找特定数量的工作日的日期。你这样使用它:
WorkDay(开始日期,要计算的工作日数)
因此,如果您希望在单元格AC2中指定的日期之后的五个工作日之前根据任何内容过滤列O,您可以使用:
Sub Datefilter()
Dim MyVal As Date
MyVal = Application.WorksheetFunction.WorkDay(Range("AC2").Value, 5)
Sheets(1).Range("A1:AA1").AutoFilter Field:=15, Criteria1:="<" & MyVal
End Sub
答案 1 :(得分:1)
Sub Test()
Dim MyVal As Date
MyVal = Range("AC2").Value
ActiveSheet.Range("A:O").AutoFilter 15, ">=" & CDbl(MyVal)
End Sub
答案 2 :(得分:0)
即使您使用的是非美国excel,这也允许您为<今天的日期过滤列”
Private Sub C_Out_of_date_Click()
Dim dDate As Date
Dim strDate As String
Dim lDate As Long
'Sheets("supplier") is a engine page where you can place info and then hide the tab
'sheets("Suppliers").Range("F1") = year (cell format yyyy) (=today() in cell)
'Sheets("Suppliers").Range("G1") = month (cell format mm) (=today() in cell)
'Sheets("Suppliers").Range("H1") = day (cell format dd) (=today() in cell)
dDate = DateSerial(Year(Sheets("Suppliers").Range("F1")), month(Sheets("Suppliers").Range("G1")), day(Sheets("Suppliers").Range("H1")))
lDate = dDate
Sheets("MHRA").Range("$A$1:$G$1353").AutoFilter
'change field depending on your data cloumn
Sheets("MHRA").Range("$A$1:$G$1353").AutoFilter Field:=3, Criteria1:="<" & lDate
end sub
希望这会有所帮助
答案 3 :(得分:-1)
例如,可以尝试过滤日期之后的日期。 字段,第7列。
ActiveSheet.Range(“ A:G”)。AutoFilter Field:= 7,Criteria1:=“>”&CLng(CDate(“ 12/31/2015”)),Operator:= xlAnd
答案 4 :(得分:-1)
LL = Cells(1000000, "G").End(xlUp).Row 'last cell in column g
ActiveSheet.Range(Cells(1, 1), Cells(LL, 7)).AutoFilter Field:=7, Criteria1:=">=" & CDbl(Date - 3)