【问题标题】:Macro to Copy from One Sheet to Another and Sort Ascending宏从一张纸复制到另一张纸并升序排序
【发布时间】:2018-11-02 20:22:32
【问题描述】:

我在工作表“员工访问详细信息”中有一个数组公式。 (值从 A 列到 D 列,数组公式延伸到第 1530 行)。

我想将这些值复制到另一个名为“Employee Access Arranged”的工作表并粘贴为值,然后根据 C 列升序排序。我有一个正在运行的代码,如下所示:-

    Private Sub CommandButton1_Click()

     ActiveWorkbook.RefreshAll

     Sheets("Employee Access Arranged").Range("A2:D" & Sheets("Employee 
     Access Arranged").Range("A" & Rows.Count).End(xlUp).Row).ClearContents

     With Sheets("Employee Access Detail")
    .Range(.Range("A4"), .Cells(.Rows.Count, "D").End(xlUp)).Copy
     End With

    With Sheets("Employee Access Arranged")
    .Cells(.Rows.Count, "A").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
    End With

    Application.CutCopyMode = False

    Range("C2").CurrentRegion.Select
    Selection.Sort Key1:=Range("C2"), Order1:=xlDescending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

    Worksheets("Employee Access Arranged").Activate
    Range("A2").Activate

     End Sub

现在,仅粘贴这些值并安排升序此代码需要几分钟,而且由于必须多次执行此操作,效率不高。

如果有办法让这段代码更有效率,我将不胜感激。我认为问题在于我如何复制这些值。

提前感谢您的帮助。欣赏它。

【问题讨论】:

  • 复制/粘贴,激活单元格会减慢 Excel-VBA 代码的速度。尝试将单元格值分配给变量,然后将新的单元格值分配给这些变量,而不是复制和粘贴。您可能想要使用循环和数组变量来一次复制多个单元格。

标签: arrays excel sorting copy-paste vba


【解决方案1】:

您的复制/粘贴/排序代码似乎足够高效,我认为这不是您滞后的原因。我怀疑Activeworkbook.RefreshAll 可能是问题所在 - 尝试将其注释掉以查看性能是否有所提高。

复制/粘贴/排序会减慢该过程,因为此类操作会与电子表格交互,而读取/写入/更新需要处理能力。请尝试以下操作:

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

` Your code here

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

【讨论】:

  • 感谢您的帮助!我相信屏幕更新和手动计算有助于减少时间。我全部刷新的原因是由于数据正在根据更新频繁的用户访问列表进行更新,并且我有一个链接到该文件的外部连接。再次感谢您的帮助!
  • @SalikGilani 很高兴我能帮上忙!请接受答案,以便其他用户知道将来要做什么。干杯!
  • 我已经有了。不要认为它会显示,因为我没有足够的声望点。希望这也可以帮助其他人。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多