【发布时间】:2019-02-20 20:34:31
【问题描述】:
我的宏的目的是执行以下步骤: 1:过滤表查看 D 列以检索所有“0”值 2:删除所有值为“0”的行 3:删除过滤器。
问题是我的表有 75,000 多行数据,所以我不断收到警报说我有太多数据。我尝试了一个循环宏,但执行这项工作需要很长时间,所以我现在正在研究一个执行上述步骤的宏。我的代码不断挂断以删除我选择的单元格范围。 (我的范围超出了表格范围,因为该表格的行数总是可变的)。
错误:“oject'_Worksheet' 的方法 'Range' 失败
我假设我需要指定表中的确切行数。如何更改代码,以便不必每次执行宏时都更改范围?
这是我目前所拥有的:
Sub Delete_Zero_Rows()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Status")
ws.Activate
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
ws.Range("B3:F1").AutoFilter Field:=4, Criteria1:="0"
Application.DisplayAlerts = False
ws.Range("B4:F").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
【问题讨论】:
-
是否有超过 6 列的数据,是否有公式?更快的解决方案可能是将完整的数据集复制到一个数组中,在那里对其进行操作并将其复制回该范围,然后一次性删除最后连续的行。
标签: excel vba filter datatable