我想知道是否有更快的方法将更多公式添加(和计算)到更大的范围内。
因此,范围计数22列,每列14235行。每列都有自己的公式,其中大多数是带有5个标准的sumif。
我的方法实际上很简单,但可能不是最快的。 它只是选择每列的范围并插入公式。
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创建一些东西可能有助于加快速度。 我的想法是插入公式,让它计算,然后将所有内容粘贴为值。这应该可以让我更快地使用该文件。但是由于我的方法也需要很长时间,所以直到现在它还不是完美的解决方案。
你们能帮助我吗?我很满意任何其他可能有助于加快工作流程的方法!
提前致谢!
最好,
Ramon的
答案 0 :(得分:0)
一个很好的简单循环可以做到:
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