我正在尝试删除一个长数据集(Excel中超过60,000行)中所有列A中有空白单元格的行。
我有一段VBA代码,在单元格少于约32,000个时可以很好地工作:
Sub DelBlankRows()
Columns("A:A").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub
有没有办法让它适用于大量行?谢谢。
我正在尝试删除一个长数据集(Excel中超过60,000行)中所有列A中有空白单元格的行。
我有一段VBA代码,在单元格少于约32,000个时可以很好地工作:
Sub DelBlankRows()
Columns("A:A").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub
你可以尝试:
Application.ScreenUpdating = False
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
Application.ScreenUpdating
可以切换代码所做的更新是否对用户可见,并且尝试使用Columns("A:A").SpecialCells(...
可能会节省时间,因为它实际上不需要选择单元格-未经测试。
Worksheets("Master").Activate
Application.ScreenUpdating = False
Columns("C:C").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
- Mannix
SpecialCells
存在一个显著缺陷,即无法处理超过8192个区域。请参见Ron De Bruin在此处的评论。如果你发现所有行都被删除了,那么这很可能是你遇到的问题。 - brettdj