【发布时间】:2018-10-14 05:38:24
【问题描述】:
下面列出了完整的代码,我将数据透视表中的单元格 DB10 中的数据复制到清单表中的第 N 列 - 另请注意,清单表中的行是动态的,并且每周增长 3018 行。 ..这是减慢处理时间的部分(我对其进行了计时,运行代码时需要大约 8 分钟才能完成处理) 这部分是事情变慢的地方:
Sheets("PivotTables").Select
Range("DB10").Select
Selection.Copy
Sheets("Checklists").Select
Dim rng As Range
NRowCount = Cells(Rows.Count, 1).End(xlUp).Offset(-3017).Row
ARowCount = Cells(Rows.Count, 1).End(xlUp).Row
For Each rng In Range("N" & NRowCount & ":N" & ARowCount)
rng.PasteSpecial xlPasteValues
Next rng
完整代码:
Sub WeeklyUpdate()
Application.ScreenUpdating = False
'
' WeeklyUpdate Macro
'
'
Sheets("Checklists").Select
Dim LR As Long
LR = Range("A" & Rows.Count).End(xlUp).Row
Range("A3:M" & LR).SpecialCells(xlCellTypeVisible).Select
'
Selection.Copy
Selection.End(xlDown).Select
Selection.End(xlUp).Select
Sheets("Checklists").Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial
xlPasteValues
Sheets("Checklists").AutoFilterMode = False
Sheets("PivotTables").Select
Range("DB10").Select
Selection.Copy
Sheets("Checklists").Select
Dim rng As Range
NRowCount = Cells(Rows.Count, 1).End(xlUp).Offset(-3017).Row
ARowCount = Cells(Rows.Count, 1).End(xlUp).Row
For Each rng In Range("N" & NRowCount & ":N" & ARowCount)
rng.PasteSpecial xlPasteValues
Next rng
Sheets("Home").Select
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
查看此链接,因为显示了另一种更快的方法。 excelitems.com/2010/12/optimize-vba-code-for-faster-macros.html
-
另见stackoverflow.com/questions/23937262/…请使用搜索功能查找类似问题。粘贴值是这里的一个常见问题,您可以根据需要调整数十或数百种解决方案。干杯。
-
感谢 David 和 Solar,我正在查看其他示例 - 我对 VBA 技能非常了解,所以通过我的搜索,答案可能多次出现在我面前,但我只是没有不能很好地理解代码以捕捉它。 -感谢您的链接。