首页 > 解决方案 > 如何使用变量自动过滤(WEEKNUM)

问题描述

我正在尝试创建一个根据当前周数过滤表的宏。

我设置了变量“ThisWeek”来给我当前的周数:

Dim ThisWeek As Variant

ThisWeek = "=WeekNum(TODAY())"

这会产生周数,并且我正在过滤的列有一个周数列表(根据另一列中的日期显示 WEEKNUM 公式的结果)

但是,我无法使用以下代码获得接受变量的标准:

Sheet2.ListObjects("Table3").Range.AutoFilter Field:=10, Criteria1:=ThisWeek

我已经在网上搜索了几个小时,并尝试了很多变量,包括:

Sheet2.ListObjects("Table3").Range.AutoFilter Field:=10, Criteria1:=">=" & ThisWeek, Operator:=xlAnd, Criteria2:="<=" & ThisWeek

我也尝试将变量类型更改为整数..

但没有运气..任何帮助都非常感谢!

谢谢

标签: excelvba

解决方案


在 VBA 中,您必须使用Date()TODAY() 来代替,并且要获取周数,请使用DatePart().

您必须检查您所在国家/地区的周数是如何计算的,并调整此函数的参数firstweekofyear

在欧洲,例如DatePart("ww", Date, vbMonday, vbFirstFourDays)在 VBA 中使用。
工作表中相应的星期数函数是 WEEKNUM(..., 21)。

Dim ThisWeek As Integer
ThisWeek = DatePart("ww", Date, vbMonday, vbFirstFourDays)
Sheet2.ListObjects("Table3").Range.AutoFilter Field:=10, Criteria1:=ThisWeek

推荐阅读