【发布时间】: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