excel - 优化 Excel 宏 - 速度
问题描述
有两个名为 Data 和 Calc 的工作表。
数据选项卡有应用程序 200,000 行和 14 列。以后每个月我都会添加大约 1500 行数据。
Calc 选项卡从数据选项卡中获取相关数据。
单元格 K3:HB3 是从 1 到 200 的数字。
下面是用于计算 1500 行和 200 列数据的公式,目前我大约需要 15 分钟来进行计算。
请你帮我更快地处理下面的宏。
Sub Calc()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Application.CutCopyMode = False
Dim S As Workbook
Dim j, 1stcolm as Integer
Dim S1, D1 As Worksheet
Set S1 = ThisWorkbook.Worksheets(“Data”)
Set D1 = ThisWorkbook.Worksheets(“Calc”)
Dim myFormula As String
myFormula = “=SUMIFS(Data!C2,DATE(YEAR(‘Calc’!R[0]C5),MONTH(‘Calc’R[0]C5)+’Calc’!R3C[0]-1,1),Data!C7,’Calc’!R[0]C2)”
D1.Activate
For j = 4 To D1.Range(“B” & Rows.Count). End (3) (1). Row
Range(“K” & j, “HB” & j) = myFormula
Next j
Application.Screenupdating= True
Application.Calculation = xlAutomatic
Application.CutCopyMode = False
End Sub
解决方案
停用自动计算并在代码末尾重新激活它。此外,最好不要在代码中使用公式,更喜欢使用循环。
Sub OptimizeTimeCode()
'Remove the update of Excel screen
Application.ScreenUpdating = False
Application.EnableEvents = False 'Remove pop-up
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
'Remove the automatic calculation
Application.Calculation = xlCalculationManual
'... your code
'To be re-activated at the end of the process
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
Application.Calculation = xlCalculationAutomatic
End Sub
推荐阅读
- c++ - “函数”不是 C++ 类型
- php - 当 url 包含点或冒号时,PHP curl 请求会导致白页
- module - 我不能在同一个文件中包含所有 trait 和 impl;如何放置在单独的文件中?
- python - 使用 python 请求进行 Web 抓取
- c++ - 使用一个 glDrawArrays 命令绘制多个不同颜色的三角形
- lisp - 在 Lisp 中应用的参数
- excel - 如何将 Excel 中导出的 *.txt 文件的编码从 UTF-8 更改为 UTF-8-BOM?
- react-native - 如何在本机反应上构建 voip 应用程序?
- web - java.lang.NoClassDefFoundError: com.twilio.Twilio
- angularjs - 如果 value ==sucess with angular js,我可以使表格单元格具有不同的颜色吗?