我有一个Excel工作表有600 000条记录,当我应用宏时,记录减少到15k。如何在宏中将所有这些15k记录放在一个新的Excel工作表中?
宏:
Sub DeleteRecord()
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 22
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 25
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 29
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 32
Dim MySheet As String
MySheet = ActiveSheet.Name
ActiveSheet.Cells(1, 1).CurrentRegion.AutoFilter Field:=33, Criteria1:= _
">=-.09", Operator:=xlAnd, Criteria2:="<=.01"
Dim cnt As Long
cnt = Worksheets(MySheet).Cells.SpecialCells(xlCellTypeLastCell).Row
ActiveSheet.Range("A2", ActiveCell.SpecialCells(xlLastCell)).Select
If cnt > 3 Then
Selection.EntireRow.Delete
End If
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 30
ActiveSheet.Cells(1, 1).CurrentRegion.AutoFilter Field:=33
' Range("Claims[[#Headers],[Change in Calculated Contribution]]").Select
Cells(1, 33).Select
Selection.AutoFilter
End Sub
2条答案
按热度按时间hkmswyz61#
请测试下一个代码。它也会对筛选后的结果范围进行排序。如果不需要,您可以注解该代码部分。我使用数组复制内容,而不需要使用太多资源(如果范围很大)。如果您还需要复制范围格式,您/我们可以使用复制-粘贴:
请确认它能满足您的需要。在十分之一的行上进行了测试。
编辑:更新的版本,能够工作在一个巨大的范围有一个
listObject
(过滤器是消除在不同的方式)...请测试下一个代码:
如果您需要新工作表中的数据具有初始顺序(排序),也可以这样做。我可以在最后一个现有列之后插入另一列,在那里从1开始增加一个变量到最后一行,最后在此列上重新排序结果范围过滤,然后删除它。
如果您需要尝试使用代码,以便查看最佳的过滤标准,则可以将新创建的工作表命名为(例如:“Result”),代码将在前面搜索它。如果它存在,则清除其内容,如果不存在,则创建一个新的...
tag5nh1u2#