如果列AJ包含“客户”,然后应用筛选器B:B否则在VBA中

我已经在VBA中写了一个小脚本。 说我有Excel工作表(表1)中的数据,并希望在某些情况下应用filter。 如果列AJ:AJ包含单词“CUSTOMER”,则应用filter范围B:BElse Msgbox("Customer NA") 。 我目前正在使用下面的代码,但它正在冻结Excel。 任何帮助真的很感激。

 Sub test() For i = 1 To 1048576 Range("AJ" & i).Select ss = Len(ActiveCell.Value) For j = 1 To ss dd = StrConv(Mid(ActiveCell.Value, j, 8), vbProperCase) If dd = "Customer" Then check = 1 check = 0 Range("AJ1").Activate Selection.AutoFilter Selection.End(xlToRight).Select Range("AJ1").Select ActiveSheet.Range("$A$1:$AQ$37518").AutoFilter Field:=36, Criteria1:= _ "=*Customer*", Operator:=xlAnd Exit For check = 0 Else End If Next j If check = 1 Then Exit For Else End If Next i End Sub 

这是冻结excel,因为你正在尽可能低效比较:)通过循环遍历行(1048576),然后在每行中的每个单元格中的每个字符。

相反,请尝试使用范围.Find方法:

 Sub testFind() Dim rng As Range Dim rngFound As Range Set rng = Range("AJ:AJ") Set rngFound = rng.Find("CUSTOMER") If rngFound Is Nothing Then MsgBox "Customer N/A" Else: 'Apply your filter here End If End Sub