〜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
ワークシート関数に依存しているのか、行をループしているだけなのか、速度が低下しているのかはわかりません。
リストオブジェクトをフィルタリングして残りを破棄する方法はありますか?
ユーザーが何かが起こっているのを見ることができるように、進行状況バーをチャックすることを考えていました...