0
我想優化一個使用Excel的sumif函數的子函數,因爲它需要幾次完成。SumIf函數與範圍對象或數組的使用
的特定行(包含在以一個循環)是這樣的一種:
Cupones = Application.WorksheetFunction.SumIf(Range("Test_FecFinCup"), Arr_FecFlujos(i), Range("Test_MtoCup"))
凡範圍被命名爲在工作簿範圍內,並且Arr_FecFlujos()是日期
的陣列,代碼工作正常,除了需要很長時間才能完成。
我想這兩種方法 陣列:
聲明我的陣列
With Test
Fluj = .Range(Range("Test_Emision").Cells(2, 1), Range("Test_Emision").Cells(2, 1).End(xlDown)).Rows.Count
Arr_FecFinCup = .Range("Test_FecFinCup")
Arr_MtoCup = .Range("Test_MtoCup")
End With
Cupones = Application.WorksheetFunction.SumIf(Arr_FecFinCup, Arr_FecFlujos(i), Arr_MtoCup)
錯誤告訴我,我需要的對象範圍工作,所以我改成:
With Test
Set Rango1 = .Range("Test_FecIniCup")
Set Rango2 = .Range("Test_MtoCup")
End With
Cupones = Application.WorksheetFunction.SumIf(Rango1, Arr_FecFlujos(i), Rango2)
那一個,不顯示任何錯誤消息,但總和是不正確的。
有人可以告訴我這些方法有什麼問題,也許我指出了正確的方向?
你嘗試過'sumifs'嗎? – mrtig
尚未,是否以不同的方式工作tan SumIf –
產生不正確總和的代碼使用的命名範圍稍有不同。原始代碼有Range(「Test_FecFinCup」)'作爲第一個範圍,而不正確的代碼使用'Set Rango1 = .Range(「Test_FecIniCup」)'這是故意的嗎? – barrowc