提问人:M Muaz 提问时间:10/21/2022 最后编辑:M Muaz 更新时间:10/24/2022 访问量:62
筛选另一个日期后的未来 2 周展望
Filtering the next 2 weeks lookahead after another date
问:
我需要单击“确定”才能使过滤器正常工作
Sub LA2w()
Dim range_to_filter As Range
Set range_to_filter = Range("K6:S999")
Dim DD As Range
Set DD = Cells(1, 11)
range_to_filter.AutoFilter Field:=19, Criteria1:=Array("In Progress", "Not Started", "="), Operator:=xlFilterValues, Operator:=xlAnd
range_to_filter.AutoFilter Field:=11, Criteria1:=">=" & DD.Value, Operator:=xlAnd, Criteria2:="<=" & DD.Value + 15
End Sub
@BigBen建议的修订版是
Sub LA4W()
Dim range_to_filter As Range
Set range_to_filter = Range("K6:S999")
Dim DD As Range
Set DD = Cells(1, 11)
range_to_filter.AutoFilter Field:=19, Criteria1:=Array("In Progress", "Not Started", "="), Operator:=xlFilterValues, Operator:=xlAnd
range_to_filter.AutoFilter Field:=11, Criteria1:=">=" & Format$(DD.Value, "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(DD.Value + 30, "mm/dd/yyyy")
End Sub
我把这张纸附在这里,以防你想看它。https://drive.google.com/file/d/1lMkZ6nwaDxMYS3gVUH5ypGsBFIWt3JfZ/view?usp=sharing
它有宏,令人惊讶的是,它在这个“test.xlsm”中运行良好 但是当我回到我的项目文件时,它说编译错误
答:
2赞
BigBen
10/21/2022
#1
Set
用于对象变量。因此,对于范围,然后在自动筛选条件中使用其值。Set DD
Dim DD As Range
Set DD = Cells(11, 1)
range_to_filter.AutoFilter _
Field:=11, _
Criteria1:=">=" & Format$(DD.Value, "mm/dd/yyyy"), _
Operator:=xlAnd, _
Criteria2:="<=" & Format$(DD.Value + 15, "mm/dd/yyyy")
另一个(可能更清晰的)选项:变量:Date
Dim DD As Date
DD = Cells(11, 1).Value
range_to_filter.AutoFilter Field:=11, Criteria1:=">=" & DD, _
Operator:=xlAnd, _
Criteria2:="<=" & DD + 15
评论
0赞
M Muaz
10/21/2022
谢谢@BigBen,第一个工作。但有一个奇怪的“错误”或任何它的名字。应用了过滤器,但它并不是真正的过滤。我必须转到过滤器,单击“自定义过滤器”,在那里我可以看到我们应用于该范围的正确日期,我所要做的就是单击“确定”,然后应用过滤器。奇怪的是,我必须完成这些步骤才能单击确定
0赞
BigBen
10/21/2022
嗯。单元格 A11 中的值是手动输入的,是公式还是其他内容?
0赞
M Muaz
10/21/2022
是的,A11 中的日期是手动输入的
0赞
BigBen
10/21/2022
如果你使用 和 它有效吗?Criteria1:=">=" & Format$(DD.Value,"mm/dd/yyyy")
Criteria2:="<=" & Format$(DD.Value + 15,"mm/dd/yyyy")
0赞
M Muaz
10/21/2022
它突出显示“Criteria2”并显示“预期:语句结束”
上一个:C 星号运算符使用
评论
Set
用于对象变量。单元格不是对象。.Value
Format
函数。如果无法更改名称,则在代码片段中,在 .Format
VBA.
Format$