У меня есть функция, которая должна вычислять сумму в массиве ячеек. Эта функция вызывается в другой подпрограмме очень часто и поэтому должна быть очень быстрой. Сначала я использовал цикл for, чтобы получить числа, но он был слишком медленным. Тогда я хотел использовать функцию листа, но это не работает по неизвестным причинам. Вот код функции:
Function CalcMD(rownumbers, colnumber)
Dim MMDRow As Integer
Dim SearchRange As String
Dim FirstAddress As Boolean
MMDRow = MMDRow()
FirstAddress = False
SearchRange = ""
'building the search range
For i = 0 To UBound(rownumbers)
If rownumbers(i) > 0 And rownumbers(i) < MMDRow Then
If FirstAddress = False Then
SearchRange = SearchRange & cells(rownumbers(i), colnumber).Address(False, False)
FirstAddress = True
Else
SearchRange = SearchRange & ";" & cells(rownumbers(i), colnumber).Address(False, False)
End If
End If
Next
CalcMD = WorksheetFunction.Sum(Range(SearchRange))
End Function
Есть ли лучший / более быстрый способ получить этот результат?