VBA多准则/可变过滤器

时间:2013-10-07 11:57:42

标签: vba variables excel-vba filter excel

我需要一些关于在Excel中过滤的帮助,并且非常感谢任何帮助。 我希望能够通过变量标准进行过滤,并且可能通过多个变量标准进行过滤。 请允许我尽可能简单地解释这个

我有一个工作簿,在Sheet 2中我有数据。在表1中,我有一个变量列表,我需要在表2中对其进行过滤。这些变量的数量会有所不同,当然每个单元格中的数据也会有所不同。

现在这里是我提出谦卑要求的地方。

我是否可以拥有两个独立功能的代码:

1)为了excel注册有多少变量,并逐个过滤每个变量(我的代码将执行我需要的操作,然后重置过滤器)。

2)excel注册变量并同时过滤所有变量(多个标准)。

我附上了一个示例excel电子表格的链接。我希望它有所帮助!

http://www.filedropper.com/excelexample

我非常感谢你提供任何帮助。

谢谢

1 个答案:

答案 0 :(得分:2)

在这个小例子中,我们从“信息”选项卡中收集值,删除所有空格并将该过滤器应用于“数据”选项卡的第一列,以便显示所有匹配项:

Sub luxation()
    Dim sh1 As Worksheet, N As Long
    Dim st As String
    Set sh1 = Sheets("Info")
    N = sh1.Cells(Rows.Count, "A").End(xlUp).Row

    For i = 2 To N
        v = sh1.Cells(i, 1).Value
        If v <> "" Then
            st = st & v & ","
        End If
    Next i
    st = Mid(st, 1, Len(st) - 1)
    Arr1 = Split(st, ",")

    Sheets("Data").AutoFilterMode = False
    With Sheets("Data").Range("$A$1:$C$9244")
        .AutoFilter Field:=1, Criteria1:=Arr1, Operator:=xlFilterValues
    End With
End Sub

在下一个示例中,将按顺序应用过滤器值:

Sub luxation2()
    Dim sh1 As Worksheet, N As Long
    Dim st As String
    Set sh1 = Sheets("Info")
    N = sh1.Cells(Rows.Count, "A").End(xlUp).Row

    For i = 2 To N
        v = sh1.Cells(i, 1).Value
        If v <> "" Then
            st = st & v & ","
        End If
    Next i
    st = Mid(st, 1, Len(st) - 1)
    Arr1 = Split(st, ",")
    Sheets("Data").Activate
    For i = LBound(Arr1) To UBound(Arr1)
        Sheets("Data").AutoFilterMode = False
        With Sheets("Data").Range("$A$1:$C$9244")
            .AutoFilter Field:=1, Criteria1:=Arr1(i), Operator:=xlFilterValues
        End With
        MsgBox "Check out the filter"
    Next i
End Sub