我在工作表“员工访问详细信息”中有一个数组公式。 (值从列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
现在,只是为了粘贴这些值并安排升序,这段代码需要几分钟,因为这必须多次完成,效率不高。
如果有一种方法可以提高效率,我将不胜感激。我认为问题在于我如何复制价值观。
提前感谢您的帮助。欣赏它。
答案 0 :(得分:0)
您的复制/粘贴/排序代码似乎足够有效,我认为这不是导致延迟的原因。我怀疑Activeworkbook.RefreshAll
可能是问题 - 尝试将其评论以查看性能是否有所改善。
复制/粘贴/排序可能会降低流程速度,因为此类操作会与电子表格进行交互,并且读取/写入/更新需要处理能力。请尝试以下方法:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
` Your code here
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True