簡體   English   中英

范圍的VBA宏自動過濾器

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM