我为每日报告录制了一个宏。当具有不同生效日期的新报告时,它仅捕获我记录的宏中指示的特定报告。
我希望捕获“覆盖期之前的所有日期”,即在单元格D2(8/1/2017)中。该日期的每个月都会更改为当前的保险期限。
我的问题:
对于Criteria2
“帐户注册”和“帐户重新安装”:而不是数组(仅包含下面的日期),是否有代码表示日期小于单元格D2中的覆盖期限?
是否有其他方法可以选择整个工作表而不是:Rows("1:1000").Select
?
我想提前感谢你。
Option Explicit
Sub AAHDAILY()
'
' AAHDAILY Macro
'
Sheets("original data").Select
ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=12, Criteria1:= _
"ACCT ENROLL"
ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=14, Operator:= _
xlFilterValues, Criteria2:=Array(0, "10/1/2015", 0, "6/1/2014", 0, "4/1/2013", 0, _
"1/1/2007")
Rows("1:1000").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste
Range("E15").Select
ActiveSheet.Name = "Retro Enrolls"
'
Sheets("original data").Select
ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=12, Criteria1:= _
"ACCT REINST"
ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=14, Operator:= _
xlFilterValues, Criteria2:=Array(0, "11/1/2015")
Rows("1:1000").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste
Range("F29").Select
ActiveSheet.Name = "Retro Reinstates"
End Sub
答案 0 :(得分:0)
假设列N包含日期(而不仅仅是看起来像日期的文本)并且该单元格D2还包含日期,则可以更改
ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=14, Operator:= _
xlFilterValues, Criteria2:=Array(0, "10/1/2015", 0, "6/1/2014", 0, "4/1/2013", 0, _
"1/1/2007")
到
ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=14, _
Operator:=xlAnd, _
Criteria1:="<" & ActiveSheet.Range("D2").Value2
即。标准是小于单元格D2中日期的任何日期。
重构代码会给出:
Option Explicit
Sub AAHDAILY()
'
' AAHDAILY Macro
'
'Use a "With" block to save typing
With Worksheets("original data").Range("$A$1:$AA$35")
.AutoFilter Field:=12, _
Criteria1:="ACCT ENROLL"
.AutoFilter Field:=14, _
Operator:=xlAnd, _
Criteria1:="<" & .Range("D2").Value2
'Create a new worksheet and give it a name
Worksheets.Add(After:=Worksheets("original data")).Name = "Retro Enrolls"
'Copy the entire range to the new worksheet (will only copy visible rows)
.Copy Worksheets("Retro Enrolls").Range("A1")
'
.AutoFilter Field:=12, _
Criteria1:="ACCT REINST"
.AutoFilter Field:=14, _
Operator:=xlFilterValues, _
Criteria1:=Array(0, "11/1/2015")
Worksheets.Add(After:=Worksheets("original data")).Name = "Retro Reinstates"
.Copy Worksheets("Retro Reinstates").Range("A1")
'Switch off the filter
.AutoFilter
End With
End Sub