AutoFilter - 使用VBA在过滤条件中进行Dydamically更改

时间:2013-08-09 16:20:09

标签: excel-vba vba excel

我遇到与此链接相同的问题 - Get AutoFilter sort criteria and apply on second sheet

我已通过链接,但无法获得所需的输出。

我在Sheet1中的过滤条件(我们可以根据需要更改)在其中一个列值(例如:col 10)上,现在基于第10列中基于过滤条件显示的数据,我想用sheet 1中的数据过滤sheet2。

我已经看到他们中的很多人在ARRAY中使用静态值如图所示但是如何自动过滤动态更改sheet1中的值并在Sheet2中过滤。请指教

.AutoFilter Field:=10, Criteria1:=Array("value1", "value2"), Operator:=xlFilterValues

2 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

Sub tgr()

    Dim wsData As Worksheet
    Dim wsCriteria As Worksheet
    Dim arrCriteria As Variant

    Set wsData = Sheets("Sheet2")
    Set wsCriteria = Sheets("Sheet1")
    arrCriteria = Application.Transpose(wsCriteria.Range("J4", wsCriteria.Range("J4").End(xlDown)).Value)

    With wsData.UsedRange
        .AutoFilter 10, arrCriteria, xlFilterValues
    End With

    Set wsData = Nothing
    Set wsCriteria = Nothing
    If IsArray(arrCriteria) Then Erase arrCriteria

End Sub

答案 1 :(得分:0)

如果您只是在VBA中定义数组怎么办?

Dim CritArray(2) as String
 CritArray(0) = Cells(1,1).Value
 CritArray(1) = Cells(2,1).Value

然后只需编辑您的代码行:

.AutoFilter Field:=10, Criteria1:=Array(CritArray(0),CritArray(1)), Operator:=xlFilterValues

我不知道您有多少条件(或其位置),但您可以添加/编辑。我的基础是你只有2个标准,但当然可以放大。