sumif函数vba更快

我在我的vba代码中使用sumifs函数,但我注意到速度一直很慢,需要几分钟,因为我每周有10k-20k的logging。

这里是反映sumiffunction的代码部分,所以代码工作,但我正在寻找方法,可以帮助它运行得更快。

For i = 2 To LR10 MOB_T.Cells(i, 13).Value = Application.WorksheetFunction.SumIfs(Rng370, Rng380, MOB_T.Cells(i, 12).Value, Rng390, Selection.Cells(6, 2).Value) Next i 

避免循环。 缓慢的部分是在VBA和电子表格之间传输数据。 对整个目标范围一次input公式 ,必要时将其转换为静态值。 就像是:

 range("M2:M" & LR10).Formula = "=SUMIFS(some params here)" 

你也可以考虑使用FormulaR1C1 ,这可能会使你的公式变得更容易和可读。

要转换为静态值 – 如果需要的话 – 只需使用:

 With range("M2:M" & LR10) .value = .value End With 

运行代码之前,可以尝试将“计算”设置为手动。

 Application.Calculation = xlCalculationManual 

然后一旦循环完成,再打开它:

 Calculate Application.Calculation = xlAutomatic