0

我有与此链接中相同的问题- 获取自动筛选排序标准并在第二张纸上应用

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

我在其中一个列值(例如:col 10)上在 Sheet1 中过滤了标准(我们可以根据需要进行更改),现在基于根据过滤条件显示的第 10 列中的数据,我想要使用工作表 1 中的数据过滤工作表 2。

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

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

4

2 回答 2

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
于 2013-08-09T17:08:44.493 回答
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

我不知道您有多少标准(或它们的位置),但您可以这样添加/编辑。我基于您只有两个标准这一事实,但它当然可以扩大。

于 2013-08-09T17:09:44.150 回答