[英]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.