excel - 根据日期删除多行
问题描述
我创建了一个宏,在其中我根据“C”列中的日期删除每一行。我在使用宏时遇到问题,因为它会遍历每一行并逐行删除它们,而不是一次全部删除。有什么办法可以加快这个过程,这样它就不会需要 30 分钟才能运行。顺便说一下,文件很大。
Sub DeleteRowsBeforeCutoff()
Application.ScreenUpdating = False
NumRows = Range("C3", Range("C3").End(xlDown)).Rows.Count
Range("A1").Select
For x = 3 To NumRows
If Cells(x, 3) < [K1] Then
Cells(x, 3).EntireRow.Delete
End If
Next x
Application.ScreenUpdating = True
End Sub
解决方案
正如@Gary 所写,代码将向后循环,我尝试使用 yr 代码(更新)将每一行删除为 25K 范围行,结果如下: mycode: 00:00:03:123 joecode: 00:00 :14:1214
两个代码:
Sub testJoe()
Dim startTime As Single
Dim i As Long
startTime = Time()
For i = Range("C2").End(xlDown).Row To 2 Step -1
If Cells(i, 3) = 3 Then Rows(i).EntireRow.Delete
Next
Debug.Print Format(Time() - startTime, "HH:nn:ss:ms")
End Sub
Sub mytest()
Dim startTime As Single, rang As Range, sh As Worksheet
startTime = Time()
Set sh = ActiveSheet
sh.UsedRange.AutoFilter Field:=3, _
Criteria1:="=3", _
VisibleDropDown:=False
Set rang = sh.UsedRange.Offset(1, 0)
Set rang = rang.Resize(rang.Rows.Count - 1)
Set rang = rang.SpecialCells(xlCellTypeVisible)
rang.EntireRow.Delete
Selection.AutoFilter
Debug.Print Format(Time() - startTime, "HH:nn:ss:ms")
End Sub
推荐阅读
- python - 绘制图像时如何将 Axis 置于最前面?
- arrays - 在不提供输入的情况下查找数组中的最小和最大元素。(提示:静态数组)
- jsonpath - Jsonpath如何使用内部json节点选择这个json
- elasticsearch - 使用无痛的弹性查询脚本问题
- r - 如何在ggplot2中为轴文本添加文本框
- javascript - 加载新页面时的 localStorage 重定向
- sql - 使用 Entityframework 核心中的枚举类型列表过滤查询
- makefile - 如何在 Makefile 中调用/链接 GLPK for Windows?[找不到-lglpk]
- linux - bitbake 无法从图像配方中选择覆盖变量
- transparency - 是否可以显示具有透明背景的 HTA