Excel 2016插入复制单元格的速度非常慢

Excel 2016插入复制单元格的速度非常慢,excel,vba,Excel,Vba,我有一张相当大的床单(大约60K行乘50列)。我正在尝试将几行(2到8行)复制到剪贴板中,然后插入复制的单元格。此操作需要一分钟以上才能完成 我尝试过禁用自动计算,从VBA启动此操作,如下所示: Range("A1").Insert xlShiftDown 没有可用的。如果我粘贴(Ctrl-V)而不是插入,它会像快照一样工作 有没有解决这个问题的方法?因为您可以足够快地粘贴数据,使用它而不是插入,然后对行进行排序: 在数据类型第一行的空列中,要插入的行数加上1(例如插入3行类型4) 在下一行中

我有一张相当大的床单(大约60K行乘50列)。我正在尝试将几行(2到8行)复制到剪贴板中,然后插入复制的单元格。此操作需要一分钟以上才能完成

我尝试过禁用自动计算,从VBA启动此操作,如下所示:

Range("A1").Insert xlShiftDown
没有可用的。如果我粘贴(Ctrl-V)而不是插入,它会像快照一样工作


有没有解决这个问题的方法?

因为您可以足够快地粘贴数据,使用它而不是插入,然后对行进行排序:

  • 在数据类型第一行的空列中,要插入的行数加上1(例如插入3行类型4)
  • 在下一行中添加下一个数字,然后选择两个单元格并自动完成该列,使每一行的数字不断增加
  • 将新数据粘贴到旧数据的末尾,紧跟在最后一行之后
  • 将粘贴的第一行编号为1,第二行编号为2,以此类推
  • 按编号列对工作表进行升序排序,然后删除该列

  • 我实现了苦艾酒算法,代码如下:

    子插入行()
    变暗源范围,填充范围作为范围
    调暗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引用的表中插入了?