Vba 只在下个月过滤
我正在使用excel,其中包含所有月份的数据。如果我必须在当前工作月的几个月后进行筛选。那么,如何编写相同的代码 现在我在2月17日工作。我想过滤到2月17日。不包括2017年2月以后的所有月份 我的代码Vba 只在下个月过滤,vba,excel,Vba,Excel,我正在使用excel,其中包含所有月份的数据。如果我必须在当前工作月的几个月后进行筛选。那么,如何编写相同的代码 现在我在2月17日工作。我想过滤到2月17日。不包括2017年2月以后的所有月份 我的代码 ActiveSheet.Range("$A$:$AA" & LastRow2).AutoFilter FIELD:=18, Criteria1:=">=01/01/2006",Criteria2:="<=28/02/2017" ActiveSheet.Range($A$:
ActiveSheet.Range("$A$:$AA" & LastRow2).AutoFilter FIELD:=18, Criteria1:=">=01/01/2006",Criteria2:="<=28/02/2017"
ActiveSheet.Range($A$:$AA“&LastRow2)。自动筛选字段:=18,标准1:=“>=01/01/2006”,标准2:=”对于标准2,您可以通过日期获取今天的日期()函数将其转换为字符串使用mid()要仅获取月份和年份值…请基于月份值编写一个if函数以获取最后一个日期值…添加一个函数以检查年份的闰值,并将日期值添加到二月
Month_1=datepart("m",date())
year_1=datepart("yyyy",date())
if month in (01,03,05,07,08,10,12) then
last_day=31
elseif month <> 02 then
last_day=30
else
isLeapYear = (Month(DateSerial(Yr, 2, 29)) = 2)
if isLeapYear = True then
last_day=29
else
last_day=28
end if
end if
criteria_2=cdate(last_day & "/" & Month_1 & "/" & year_1)
Month_1=datepart(“m”,date())
年份1=日期部分(“yyyy”,日期())
如果月份在(01,03,05,07,08,10,12)中,则
最后一天=31
如果是第二个月呢
最后一天=30
其他的
isLeapYear=(月(日期序列(年,2,29))=2)
如果isLeapYear=True,则
最后一天=29
其他的
最后一天=28
如果结束
如果结束
标准2=日期(最后一天、“/”月、“/”年)
将此变量添加为筛选器中的条件2…您将始终使用此代码获取当前月份的最后一天
我尚未测试代码。如果代码有错误,请原谅。您可以尝试使用工作表函数.EoMonth
获取当前月份的最后一天(或任何其他日期)
另外,尽量远离ActiveSheet
,而使用完全限定对象
注意:在我的测试中,我发现如果我使用Criteria2:=“=01/01/2006”,操作符:=xlAnd,Criteria2:=”听起来像是一个计划。现在,如果您愿意分享您的代码尝试,您在哪里需要我们的帮助,我们将尽力帮助您我的代码如下-ActiveSheet.Range($A$:$AA“&LastRow2)。自动筛选字段:=18,标准1:=“>=01/01/2006”,标准2:=”ActiveSheet.Range(“A1:AA”&LastRow2)。自动筛选字段:=18,标准1:“>=01/01/2006“,Operator:=xlAnd,Criteria2:=”@Saran试着用DateSerial给你在下面得到的答案提供反馈,一个月的最后一天实际上是下个月的第0天。因此,要获得2月的最后一天,你可以使用DateSerial(2017,3,0)
。要获得当月的最后一天,你可以使用DateSerial(年(现在),月(现在)+1,0)
。
Option Explicit
Sub FilterNextTwoMonths()
Dim toDate As Date
' get the last date of the current month
toDate = WorksheetFunction.EoMonth(Date, 0)
With Worksheets("Sheet1") '<-- replace "Sheet1" with your sheet's name
.Range("$A$:$AA" & LastRow2).AutoFilter Field:=18, Criteria1:=">=01/01/2006", Operator:=xlAnd, Criteria2:="<=" & CDbl(toDate)
End With
End Sub