【问题标题】:Date Filter - Month & Year日期过滤器 - 月和年
【发布时间】:2019-07-27 19:55:04
【问题描述】:

我想过滤一个日期列基础 1年 2.月份

年和月是动态字段,我已将它们的值保存在宏中 年 - 年 月 - 第 mn

有没有办法让宏简单地使用这些条件进行过滤而不插入额外的列?

Sub testcode()

Range("a1:a200").Select

yr = 2019
mnth = Feb

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

End Sub

【问题讨论】:

  • 您能告诉我们您已有的代码吗?
  • 嘿达米安!刚刚更新了测试代码

标签: excel vba date filter


【解决方案1】:

使用 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

【讨论】:

  • 知道了!谢谢 :D 刚刚在我的项目上进行了测试,它可以工作
【解决方案2】:

如果你记录了你得到的日期值的自动过滤器的设置:

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

基于此易于编写和测试例程来设置过滤器:

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

【讨论】:

    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多