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