我正在尝试更多地进入VBA,因为它允许更多的自由。我想弄清楚的是,如何使用VBA过滤列,仅显示仅在上个月,当前月和未来两个月出现的值。
我知道我可以使用xlFilterLastMonth但是现在我仍然只是记录宏,然后更改它们以满足我更具体的需求。我可以使用xlFilterNextMonth或xlFilterLastMonth找到奇异的过滤器。但我无法找到我正在寻找的东西。
这是我目前的宏:
{{1}}
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
假设我们有以下数据:
Dates
2/27/2016
5/28/2016
1/30/2016
5/3/2016
2/13/2016
4/29/2016
2/3/2016
7/5/2016
5/23/2016
3/11/2016
7/3/2016
2/5/2016
5/4/2016
6/20/2016
6/26/2016
7/14/2016
5/9/2016
1/26/2016
2/14/2016
3/9/2016
4/1/2016
2/18/2016
3/7/2016
在 A 栏中,我们希望在以下位置显示日期:
这些日期大于或等于2016年3月1日,如果今天是2016年4月20日,则小于或等于2016年6月30日。
考虑:
Sub Macro1()
Dim d1 As Date, d2 As Date
Dim cr1 As String, cr2 As String
d1 = DateSerial(Year(Now), Month(Now) - 1, 1)
d2 = DateSerial(Year(Now), Month(Now) + 3, 0)
MsgBox d1 & vbCrLf & d2
MsgBox CLng(d1) & vbCrLf & CLng(d2)
cr1 = ">=" & CStr(CLng(d1))
cr2 = "<=" & CStr(CLng(d2))
ActiveSheet.Range("$A$1:$A$24").AutoFilter Field:=1, Criteria1:=cr1, _
Operator:=xlAnd, Criteria2:=cr2
End Sub
结果:
如果今天是1月或12月,您必须进一步测试以确定它是否有效。也就是说,代码可以预见到明年还是回到上一年。