我有一个 ~500 行的 ListObject 表,我在一个命名范围内也有 4 个值。
对于 500 行,可能有 30 个唯一值重复(随机)出现,我想删除其值不在命名范围内的所有行。
我有以下工作,但运行速度比预期慢(大约 2 分钟):
Sub removeAccounts()
Dim tbl As ListObject
Dim i As Integer
Set tbl = ThisWorkbook.Sheets("TheSheet").ListObjects("TheTable")
i = tbl.ListRows.Count
While i > 0
If Application.WorksheetFunction.CountIf(Range("Included_Rows"), tbl.ListRows(i).Range.Cells(1).Value) = 0 Then
tbl.ListRows(i).Delete
End If
i = i - 1
Wend
End Sub
我不确定是对工作表函数的依赖还是只是循环遍历减慢了它的行。
有没有办法过滤 listobject 并丢弃其余的?
我正在考虑只是在其上放置一个进度条,以便用户可以看到正在发生的事情......