如何更快地过滤范围?

时间:2012-10-13 05:10:12

标签: excel excel-vba vba

我想按列(rng01)中的值过滤范围(9列和1400行)

Application.ScreenUpdating = False
db.Rows.Hidden = False
For Each cell In rng01.Cells
If Not cell.Value = "323" Then
cell.EntireRow.Hidden = True
End If
Next cell
Application.ScreenUpdating = True

这有效,但需要3-4秒 有没有更快的方法,请吗?

1 个答案:

答案 0 :(得分:2)

让我们看看我是否理解了您的问题:rng01是九列之一,您希望对其进行过滤,以便只显示rng01 = 323中值的行。< / p>

您可以使用AutoFilter。您需要在数据上方添加标题行(但可以为空白)。

rng01.AutoFilter
rng01.AutoFilter Field:=1, Criteria1:="323", VisibleDropDown:=False

如果表单rng01引用已有效AutoFilter,则第一个rng01.AutoFilter会将其清除。

请注意,rng01 一列宽

如果实际上rng01引用的范围大于一列,请使用

rng01.Columns(3).AutoFilter
rng01.Columns(3).AutoFilter Field:=1, Criteria1:="323", VisibleDropDown:=False