繁体   English   中英

如何使用变量自动过滤(WEEKNUM)

[英]How to Autofilter using a variable (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

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

但没有运气..任何帮助深表感谢!

谢谢

我可以为AutoFilter提供的最佳方法是将TODAY()(在VBA中为Date )解析为开始日期和结束日期,然后将AutoFilter的Criteria1和Criteria2参数与Operator:=xlAnd 在VBA中,使用Weekday(<date>, [<optional vbDayOfWeek>])函数和一些小数学运算来查找上一个星期日(或任何其他DOW)和下一个星期六是一件小事。

Weekday和Date函数用于始终解析动态日期,例如5月的第二个星期日或11月的第三个星期一。

在VBA中,必须使用Date()而不是TODAY(),并且要获取星期数,请使用DatePart()

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

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

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

也可以对其进行评估 (不确定是否需要使用"=" &部分):

ThisWeek = "=" & [WeekNum(TODAY())]

暂无
暂无

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

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