将sumifs公式添加到大范围的更快速的方法

我想知道是否有一个更快的方式增加(和计算)一些公式成一个更大的范围。

所以范围计数22列,每行14235行。 每列都有自己的公式,其中大部分是5个标准的总和。

我的方法其实很简单,但可能不是最快的。 只是select每列的范围并插入公式。

Sheet1.Range("G4:G14238").FormulaR1C1 = "=SUMIFS(sumRangeA,criteria_range1,RC[-6],criteria_range2,RC[-5],criteria_range3,RC[-4],criteria_range4,RC[-3],criteria_range5,RC[-2])" Sheet1.Range("H4:H14238").FormulaR1C1 = "=SUMIFS(sumRangeB,criteria_range1,RC[-7],criteria_range2,RC[-6],criteria_range3,RC[-5],criteria_range4,RC[-4],criteria_range5,RC[-3])" ...and so on 

这实际上需要一段时间,我相信是因为excel插入后计算了一切。

所以我试图在插入公式之前停用自动计算,并让excel在每个公式被填充后计算一切,但是甚至需要更长的时间(接近两倍)。 不知道我是否正确使用了代码

 Application.Calculation = xlCalculateManual Sheet1.Range("G4:G14238").FormulaR1C1 = "=SUMIFS(sumRangeA,criteria_range1,RC[-6],criteria_range2,RC[-5],criteria_range3,RC[-4],criteria_range4,RC[-3],criteria_range5,RC[-2])" Sheet1.Range("H4:H14238").FormulaR1C1 = "=SUMIFS(sumRangeB,criteria_range1,RC[-7],criteria_range2,RC[-6],criteria_range3,RC[-5],criteria_range4,RC[-4],criteria_range5,RC[-3])" Application.Calculation = xlAutomatic 

为了让你更好地理解我想要达到的目标:到现在为止,我把这些公式放在一个常规的excel表格中(根本没有vba)。 它正在工作,但非常缓慢。 如果我筛选一个条件,最多需要两分钟才能显示结果。 由于我每天都使用这张表,所以非常耗时而且效率不高。

所以我认为用vba创build一些东西可能会使它更快。 我的想法是插入公式,让它计算,然后粘贴所有的值。 这应该让我更快地处理文件。 但是,由于我的方法也花费了很多时间,所以直到现在还不是完美的解决scheme。

你们能帮我吗? 我很高兴可以帮助加快工作stream程的任何其他方法!

提前致谢!

最好,

拉蒙

一个很好的简单循环就可以做到

 Sub SumIf() Dim ASCII As Long Dim iRef As Long Application.Calculation = xlCalculationManual iRef = 6 For ASCII = 71 To 93 Sheet1.Range(Chr(ASCII) & "4:" & Chr(ASCII) & "14238").FormulaR1C1 = "=SUMIFS(sumRange,criteria_range1,RC[-" & iRef & "],criteria_range2,RC[-" & (iRef - 1) & "],criteria_range3,RC[-" & (iRef - 2) & "],criteria_range4,RC[-" & (iRef - 3) & "],criteria_range5,RC[-" & (iRef - 4) & "])" iRef = iRef + 1 Loop Application.Calculation = xlAutomatic End Sub