VBA公式速度较慢,数据集较大
我有以下代码并导致Excel每次崩溃。 Sheet上的A列有大约280,000行数据。 任何想法如何更有效地写这段代码? 理想情况下,我想有没有公式的价值观。
sub test() Dim Total_Rows As Long Sheets("Sheet1").Activate Total_Rows = 13000 Range("C2", "C" & Total_Rows) = "=SUMIFS('Sheet2'!C:C,'Sheet2'!A:A,'Sheet2!A2)" End Sub
您可以始终限制SUMIFS
必须考虑的单元格数量,例如,使用范围A1:A400000
而不是A:A
。
但是我觉得你应该重新考虑一下制定13000个总和公式是否确实是必要和有意义的。
显而易见的改进是closures屏幕更新和计算,而macros则填入公式,最后再打开。 可能还有其他方法可以改善这一点,但是我会从这些低垂的果实开始。
sub test() Dim Total_Rows As Long Sheets("Sheet1").Activate '## Disable screenupdating and calculation Application.ScreenUpdating = False Application.Calculation = -4135 xlCalculationManual Total_Rows = 13000 Range("C2", "C" & Total_Rows) = "=SUMIFS('Sheet2'!C:C,'Sheet2'!A:A,'Sheet2!A2)" '## Put the calculation back to Automatic Application.Calculation = -4105 'xlCalculationAutomatic ActiveSheet.Calculate 'Force a calculation '## Replace the formulas with values only: Range("C2", "C" & Total_Rows).Value = Range("C2", "C" & Total_Rows).Value '## Allow the screen to update Application.ScreenUpdating = True End Sub