[英]VBA Macro autofilter for a range
我正在嘗試根據預定范圍的變量來過濾一組數據。 這些將由電子表格的用戶在“主頁”工作表的設置區域中聲明。 但是,在運行宏時,它不會返回任何結果。 我試圖以多種方式解決此問題,但是沒有任何結果返回期望的結果。
到目前為止,我嘗試使用運算符,將值聲明為數組,過濾將包含值和通配符的單元格范圍。
我當前的代碼如下,這些都不返回我想要的輸出
Dim fliterStr As Variant
filterStr = wsHome.Range("R6:R12").Value
wsMissing.Range("G1").AutoFilter field:=7, Criteria1:=filterStr
wsMissing.Range("G1").AutoFilter field:=7, Criteria1:="*X*", Operator:=xlFilterValues, Criteria2:="*Y*"
預期結果將是過濾器搜索與R6:R12范圍內的變量匹配的任何值,但是當前這將返回為空白。
第二段代碼返回一些但不是全部的期望結果。 如果我不包括運算符和Criteria2,那么我會看到一組應包括但不存在的不同結果。
用於自動過濾條件的陣列適用於一維陣列。 拾取列的一部分時,您將創建一個二維數組。 您需要使用TRANSPOSE()
進行轉換。
假設我們在Sheet1
:
在Sheet2
:
正在運行:
Sub AutoDemo()
Dim wsHome As Worksheet, wsMissing As Worksheet
Dim rng1 As Range, rng2 As Range, wf As WorksheetFunction
Dim filterStr
Set wsHome = Sheets("Sheet1")
Set wsMissing = Sheets("Sheet2")
Set wf = Application.WorksheetFunction
Set rng1 = wsHome.Range("A1:G20")
Set rng2 = wsMissing.Range("R6:R12")
filterStr = wf.Transpose(rng2)
rng1.AutoFilter Field:=7, Criteria1:=filterStr, Operator:=xlFilterValues
End Sub
將產生:
構成一維數組的是TRANSPOSE()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.