简体   繁体   English

日期过滤器-月和年

[英]Date Filter - Month & Year

I want to filter a date column basis 1. Year 2. Month 我想过滤日期列的基础1.年2.月

The Year & Month are dynamic fields and I've saved their values in the macro as YEAR - yr Month - mnth “年和月”是动态字段,我将其值保存在宏中为“ YEAR-yr Month-mnth”

Is there a way for the macro to simply filter using these conditions without inserting additional columns ? 宏是否可以使用这些条件进行简单过滤而无需插入其他列?

在此处输入图片说明

Sub testcode()

Range("a1:a200").Select

yr = 2019
mnth = Feb

ActiveSheet.Range("$A$1:$A$3200").AutoFilter Field:=1, Criteria1:=yr

End Sub

Set up a date range using Criteria1 and Criteria2. 使用Criteria1和Criteria2设置日期范围。

dim dt as long

dt = datevalue("1 " & mnth & ", " & yr)

with activesheet
  with .range(.cells(1, "A"), .cells(.rows.count, "A").end(xlup))
    .autofilter field:=1, criteria1:=">="&dt, operator:=xland, _
                criteria2:="<" & dateserial(year(dt), month(dt)+1, 1)
  end with
end with

If you record the setting of an autofilter of the date value you get: 如果记录日期值自动过滤器的设置,则会得到:

Sub DateFiter_Recorded()
'
' DateFiter_Recorded Macro
'
    Columns("C:C").ColumnWidth = 16.29
    ActiveSheet.Range("A1:A3200").AutoFilter Field:=1, Operator:= _
        xlFilterValues, criteria2:=Array(1, "2/4/2019")
    ActiveWindow.SmallScroll Down:=153
    Range("C194").Select
End Sub

Based on this is easy to code and test a routine to set a filter: 基于此,很容易编写代码并测试例程以设置过滤器:

Option Explicit

Sub SetDateValueRange()
    ActiveWorkbook.Names.Add Name:="DateValRange",  RefersTo:="=Sheet1!A1:A3200"
End Sub

Sub DateFiter_JAN_2019()
    ActiveSheet.Range("DateValRange").AutoFilter Field:=1, Operator:= _
        xlFilterValues, criteria2:=Array(1, "1/31/2019")
End Sub

Sub DateFiter_FEB_2019()
    Dim criteria2value
    criteria2value = Array(1, "2/15/2019")
    ActiveSheet.Range("DateValRange").AutoFilter Field:=1, Operator:= _
        xlFilterValues, criteria2:=criteria2value
End Sub

Sub DateFiter_AUG_2019()
    Dim criteria2value
    criteria2value = Array(1, "8/1/2018")
    ActiveSheet.Range("DateValRange").AutoFilter Field:=1, Operator:= _
        xlFilterValues, criteria2:=criteria2value
End Sub

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM