私は約8000以上の行を持っています。オートフィルタを使用して行を削除するには数分かかります。私はオートフィルターが(行ごとにループを繰り返すのではなく)削除するための最速の方法だと思った。どうすればスピードアップできますか?より速い方法がありますか?公平を期すために、行の半分はXDに削除されオートフィルタでの削除には時間がかかりすぎます
With ThisWorkbook.Worksheets("Upload")
lastRow = .Cells(.Rows.Count, "S").End(xlUp).Row
Set dataRng = .Range(.Cells(4, 1), .Cells(lastRow, 19))
dataRng.AutoFilter field:=19, Criteria1:="=0"
Application.DisplayAlerts = False
dataRng.Offset(1, 0).Resize(dataRng.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Rows.Delete
Application.DisplayAlerts = True
.ShowAllData
End With
に
dataRng.Sort key1:=Range("S4"), order1:=xlDescending, Header:=xlYes
を追加したデータをソートすることができますか?そうであれば、 '= $ S1 = 0'という式を持つ列を追加して、コピーしてから最初にソートし、最初のオカレンス(存在する場合)を最後の行に削除しますか? – Demetriまた、「良い」データをフィルタリングして新しいシートにコピーし、古いシートに新しいシートをコピーすることもあります。 – Demetri
Hmmソートがうまくいくかもしれません... – findwindow