最有效的方法来隐藏所有发生特定值的行

如果有多个标题行,Excel自动筛选器不能正常工作,而且它也不能分配给特定的列。 所以我想用VBAmacros来过滤。

我有

Sheet2.Range("A1:A40").Find(what:="Software", _ After:=Cells(4, 1), _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False _ ).EntireRow.Hidden = True 

但这只隐藏了第一次出现“软件”的行。 有没有办法使用.find的,或者我必须使用循环?

如果你的范围不是很大,你总是可以遍历它,检查一个值,如果发现隐藏:

 Sub test() Application.ScreenUpdating = False Dim lastRow As Integer, i As Integer Dim rng As Range, cel As Range lastRow = Sheet2.UsedRange.Rows.Count For i = lastRow To 1 Step -1 If Cells(i, 1).Value = "Software" or cells(i,1).Value = "software" Then Cells(i, 1).EntireRow.Hidden = True End If Next i Application.ScreenUpdating = True End Sub 

注意: software部分是区分大小写的,这就是我使用Or