2017-08-31 290 views
1

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

下面是反映sumif功能的代码部分,所以代码可以工作,但我正在寻找可以帮助它更快运行的方法。

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 
+4

代码输入 –

+0

谢谢谢谢,但我如何修改它,如果列M取决于列L的值,MOB_T.Cells(i,12).Value我试图使用范围和R1C1,但它的名字在我的单元格值。 – sc1324

回答

2

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

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

你也可以考虑使用FormulaR1C1这可能使您的公式更容易和可读性。

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

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

运行速度的问题属于上https://codereview.stackexchange.com/ – sc1324

0

你可以尝试运行您的代码之前设置计算为手动。

Application.Calculation = xlCalculationManual 

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

Calculate 
Application.Calculation = xlAutomatic 
+0

谢谢,我也尝试过Application.ScreenUpdating = False,但并没有真正减少运行时间。 – sc1324