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

时间:2015-08-20 17:18:26

标签: excel vba find

如果标题有多行,则Excel自动过滤器无法正常工作,并且它也不能分配给特定列。所以我想通过VBA宏进行过滤。

我有

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或者我必须使用循环吗?

1 个答案:

答案 0 :(得分:2)

如果您的范围不是超大,您可以随时循环访问它,检查值,并在找到时隐藏:

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的原因。