excel - 如果某些行大于 0 对于非常大的工作表,Excel VBA 宏将删除行
问题描述
我对创建宏仍然很陌生,而且我很难找到一个可以删除电子表格的整行数据的宏,该电子表格的大小可能会有所不同,但通常约为 100k 行。
条件是如果一个单元格(在本例中为“AN”行中的任何内容)大于 0,则删除整行。
我目前正在尝试使用类似下面的内容,但由于电子表格的大小,Excel 似乎不喜欢该代码,因为它永远不会完成。
last = Cells(Rows.Count, "AN").End(xlUp).Row
For i = last To 2 Step -1
If (Cells(i, "AN").Value) > 0 Then
Cells(i, "AN").EntireRow.Delete
End If
Next i
是否有不同的方法来编写代码,这样它就不会对尝试处理 100k 行数据造成太大压力?
谢谢!
解决方案
你可以试试这个来节省计算能力。它会关闭宏运行时不需要的某些功能,然后重新打开它们。有更复杂的方法可以检查设置并保存它们并在之后恢复它们,但这些通常是基础知识。
Private Sub TurnOffFunctions()
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
End Sub
Private Sub TurnOnFunctions()
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
Sub DeleteRows()
Call TurnOnFunctions
last = Cells(Rows.Count, "AN").End(xlUp).Row
For i = last To 2 Step -1
If (Cells(i, "AN").Value) > 0 Then
Cells(i, "AN").EntireRow.Delete
End If
Next i
Call TurnOffFunctions
End Sub
推荐阅读
- arrays - 在 GO 中何时使用切片而不是数组
- go - 创建 Go 结构字段“别名”的惯用方式是否只是自定义 getter?
- c# - 更改列表框中复选框的颜色
- python - JupyterLab 地理地图如何工作?
- c - 使用 OR 运算符时 for() 循环中断 (C)
- scripting - 上个季度的 Pine 脚本设置时间戳不起作用
- python - 接受 Youtube 的 cookie 同意
- python - 关键错误 22,当我想删除日期时间格式的行内容时出现获取 Loc 错误
- purescript - Purescript中遍历/绑定/折叠绑定效果的区别
- c - “警告:控制到达非无效函数的结尾”在一个简单的 for 循环(GCC)中