更快的多个标准search/filterexcel

嗨,大家好我下面的代码来search给定列中的多个文本。 问题在于它非常缓慢。 有没有人知道任何其他方式来执行它更快?

例如给出数组('foo','bar'),代码应该在列上迭代并匹配/只筛选具有任何给定顺序的两个文本的行。

Sub aTest() ScreenUpdating = False Dim selectedRange As Range, cell As Range Dim searchValues() As String searchValues = Split(ActiveSheet.Cells(2, 1).Value) Set selectedRange = Range("A4:A40000") Dim element As Variant For Each cell In selectedRange If cell.Value = "" Then Exit For Else For Each element In searchValues If Not InStr(1, cell.Value, element) Then cell.EntireRow.Hidden = True End If Next element End If Next cell ScreenUpdating = True End Sub 

我正在使用它作为filter。 复制并粘贴下面的代码进行一些修改。 但后来我无法做出更改匹配多个string。

 Private Sub Worksheet_Change(ByVal Target As Range) Dim iFilterColumn As Integer Dim rFilter As Range Dim sCriteria As String On Error Resume Next With Target Set rFilter = .Parent.AutoFilter.Range iFilterColumn = .Column + 1 - rFilter.Columns(1).Column If Intersect(Target, Range("rCriteria")) Is Nothing Then GoTo Terminator Select Case Left(.Value, 1) Case ">", "<" sCriteria = .Value Case Else sCriteria = "=*" & .Value & "*" End Select If sCriteria = "=" Then .Parent.Range(rFilter.Address).AutoFilter Field:=iFilterColumn Else .Parent.Range(rFilter.Address).AutoFilter Field:=iFilterColumn, Criteria1:=sCriteria End If End With Terminator: Set rFilter = Nothing On Error GoTo 0 End Sub 

我假设这一点:

 Set selectedRange = Range("A4:A40000") 

这是因为尺寸没有正确定义,以下应该限制在正确的范围内

 Set selectedRange = Range("A4:A" & Cells(Rows.Count, "A").End(xlUp).Row) 

如果不影响,我总是使用这些代码来加速Excel(而不是单独的ScreenUpdating)。

 Sub ExcelNormal() With Excel.Application .Cursor = xlDefault .ScreenUpdating = True .DisplayAlerts = True .Calculation = xlCalculationAutomatic .StatusBar = False End With End Sub Sub ExcelBusy() With Excel.Application .Cursor = xlWait .ScreenUpdating = False .DisplayAlerts = False .Calculation = xlCalculationManual .StatusBar = False End With End Sub 

注意:将来可能代码审查将是更好的发布地点。