Excel 2016插入复制单元格的速度非常慢
我有一张相当大的床单(大约60K行乘50列)。我正在尝试将几行(2到8行)复制到剪贴板中,然后插入复制的单元格。此操作需要一分钟以上才能完成 我尝试过禁用自动计算,从VBA启动此操作,如下所示:Excel 2016插入复制单元格的速度非常慢,excel,vba,Excel,Vba,我有一张相当大的床单(大约60K行乘50列)。我正在尝试将几行(2到8行)复制到剪贴板中,然后插入复制的单元格。此操作需要一分钟以上才能完成 我尝试过禁用自动计算,从VBA启动此操作,如下所示: Range("A1").Insert xlShiftDown 没有可用的。如果我粘贴(Ctrl-V)而不是插入,它会像快照一样工作 有没有解决这个问题的方法?因为您可以足够快地粘贴数据,使用它而不是插入,然后对行进行排序: 在数据类型第一行的空列中,要插入的行数加上1(例如插入3行类型4) 在下一行中
Range("A1").Insert xlShiftDown
没有可用的。如果我粘贴(Ctrl-V)而不是插入,它会像快照一样工作
有没有解决这个问题的方法?因为您可以足够快地粘贴数据,使用它而不是插入,然后对行进行排序:
我实现了苦艾酒算法,代码如下:
子插入行()
变暗源范围,填充范围作为范围
调暗LastCol、LastRow、ActRow、CpdRows的长度
作为整数的Dim i
如果Application.CutCopyMode xlCopy,则退出Sub
Application.ScreenUpdating=False
Application.EnableEvents=False
使用ActiveSheet
LastCol=.UsedRange.Columns.Count
LastRow=.UsedRange.Rows.Count
ActRow=ActiveCell.Row
.粘贴目标:=.单元格(最后一行+1,1)
CpdRows=.UsedRange.Rows.Count-LastRow
Application.Calculation=xlCalculationManual
设置SourceRange=.Range(.Cells(ActRow,LastCol+1),.Cells(ActRow+1,LastCol+1))
SourceRange.Cells(1).Value=CpdRows+1
SourceRange.Cells(2).Value=CpdRows+2
设置填充范围=.Range(.Cells(ActRow,LastCol+1),.Cells(LastRow,LastCol+1))
SourceRange.AutoFill目标:=FillRange
对于i=1到CpdRows
.单元格(LastRow+i,LastCol+1)。值=i
接下来我
.Range(.Cells(ActRow,1),.Cells(LastRow+CpdRows,LastCol+1))。排序键1:=.Cells(ActRow,LastCol+1)_
Order1:=xlAscending,Header:=xlNo,MatchCase:=False,Orientation:=xlTopToBottom
.列(LastCol+1)。删除
以
Application.Calculation=xlCalculationAutomatic
Application.EnableEvents=True
Application.ScreenUpdating=True
End Sub
您能详细说明您实际想要实现的目标吗?为什么要插入行?等等。你是如何复制和选择单元格的?也许你的瓶颈不只是在最后一行代码上。你在使用循环吗?新数据应该在工作表的顶行,这就是为什么我必须插入行,而不是到表的末尾粘贴它们。你能足够快地对工作表排序吗?如果是这样,我有一个想法…我不使用任何循环。我只需在同一张纸上复制几行,右键单击并从弹出菜单中选择“插入复制的单元格”,将序号添加到60K行也需要一些时间,但这个想法确实很有帮助!事实上,在大多数计算机上,这应该是1秒以下,我猜你有很多公式正在进行,或者可能是一些在工作表更改事件上触发的事件?相当多的数组vlookup,但我真的怀疑这是原因。看,我试过禁用自动重新计算,但没用。一定是别的东西。。。但是我没办法猜它是什么。你是不是在VLOOKUPS引用的表中插入了?