1

範囲(9列と1400行)を列の値(rng01)でフィルタリングしたい

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秒かかります。
より速い方法はありますか、pls?

4

1 に答える 1

2

私があなたの質問を理解しているかどうかを見てみましょう: rng01は9つの列の1つであり、rng01=の値323が表示される行のみが表示されるようにフィルタリングします。

これに使用できますAutoFilter。データの上にヘッダー行が必要になります(ただし、空白にすることもできます)。

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

参照しているシートrng01にすでにアクティブなものがあるAutoFilter場合、最初rng01.AutoFilterにそれをクリアします。

rng01これは1列幅であることに注意してください。

実際rng01に1列より広い範囲を参照している場合は、

rng01.Columns(3).AutoFilter
rng01.Columns(3).AutoFilter Field:=1, Criteria1:="323", VisibleDropDown:=False
于 2012-10-13T07:01:03.763 に答える