Vba 通过IF和多准则进行自动筛选

Vba 通过IF和多准则进行自动筛选,vba,excel,if-statement,Vba,Excel,If Statement,修改后的问题:下面的代码为结果添加了过滤器。当宏转到filter Field 13 by arrResults()时,它只按捕获的最后一个值进行过滤。在运行调试并查看即时窗口时,我确实看到在arrResults()中捕获了多个值,但代码仅按最后一个条目进行过滤(即,如果单击“Received/Sent/Fail”,则仅返回“Fail”) Option Explicit Sub Add_Sheet_Update() Dim LastRow As Long Dim Rng As Range, st

修改后的问题:下面的代码为结果添加了过滤器。当宏转到filter Field 13 by arrResults()时,它只按捕获的最后一个值进行过滤。在运行调试并查看即时窗口时,我确实看到在arrResults()中捕获了多个值,但代码仅按最后一个条目进行过滤(即,如果单击“Received/Sent/Fail”,则仅返回“Fail”)

Option Explicit

Sub Add_Sheet_Update()
Dim LastRow As Long
Dim Rng As Range, str1 As String, str2 As String
Dim i As Long, wsName As String, temp As String
Dim arrResults()

With Sheets("All Call Center Detail")
    LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
    Set Rng = .Range("A1:BT" & LastRow)
End With

With Sheets("Search Form")
    str1 = .Range("E9").Text
    str2 = .Range("E13").Text
End With

Dim x As Integer, y As Integer
With Range("R1:S99") ' 2 columns, any # of rows
    For x = 1 To .Rows.Count
        If .Cells(x, 1) Then
            y = y + 1
            ReDim Preserve arrResults(1 To y)
            arrResults(y) = .Cells(x, 2)
            End If
    Next x
End With
Debug.Print Join(arrResults, "/")

Sheets.Add After:=Sheets("Search Form")
ActiveSheet.Name = ("Results")

Sheets("All Call Center Detail").Select
If Not str1 = "" Then Rng.AutoFilter Field:=6, Criteria1:=str1
If Not str2 = "" Then Rng.AutoFilter Field:=7, Criteria1:=str2
If y > 0 Then Rng.AutoFilter Field:=13, Criteria1:=arrResults

Rng.SpecialCells(xlCellTypeVisible).EntireRow.Copy Sheets("Results").Range    ("A1")

Application.CutCopyMode = False
ActiveSheet.ShowAllData

Sheets("Results").Activate
ActiveSheet.Columns.AutoFit
wsName = Format(Date, "mmddyy")
If WorksheetExists(wsName) Then
    temp = Left(wsName, 6)
    i = 1
    wsName = temp & "_" & i
    Do While WorksheetExists(wsName)
        i = i + 1
        wsName = temp & "_" & i
    Loop
End If

ActiveSheet.Name = wsName
Range("A1").Select

End Sub

运算符
参数添加到
自动筛选
语句中:

If y > 0 Then Rng.AutoFilter Field:=13, Criteria1:=arrResults, Operator:=xlFilterValues

运算符
参数添加到
自动筛选
语句中:

If y > 0 Then Rng.AutoFilter Field:=13, Criteria1:=arrResults, Operator:=xlFilterValues

欢迎来到StackOverflow,Bill。你有一两个屏幕截图来支持上面的描述吗?这是一个很棒的网站。可能有一些提示可以帮助你。也许你也可以缩短上面的帖子(或者所有相关的/必要的)。请不要误解。但是你的帖子是对的,很难跟上(至少对我来说).但是也许你不需要改变任何东西,这里的其他人可以跟随你,帮助你解决你的问题。嗨,拉尔夫-谢谢你的回复。我编辑了我的原始帖子,希望把问题弄清楚。欢迎来到StackOverflow,比尔。你有一两个屏幕截图来支持上述描述吗?这是一个很棒的网站。可能吧这里有一些建议可以帮助你。也许你也可以缩短上面的文章(或者所有内容都是相关的/必要的)。请不要误解。但是你的文章是对的,很难跟上(至少对我来说).但是也许你不需要改变任何事情,这里的其他人可以跟进并帮助你解决你的问题。嗨,拉尔夫-谢谢你的回复。我编辑了我原来的帖子,希望把问题弄清楚。