我有以下代码并导致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
答案 0 :(得分:2)
您始终可以限制SUMIFS
必须考虑的单元格数量,例如使用范围A1:A400000
代替A:A
。
但我认为你应该重新考虑是否确实有必要创造13,000个sumifs公式。
答案 1 :(得分:1)
显而易见的改进是在宏填充公式时关闭屏幕更新和计算,然后在最后重新开启。可能还有其他方法可以改善这一点,但我会从这些悬而未决的成果开始。
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