На сегодняшний день самый чистый способ сделать это - с помощью функции, определяемой пользователем (UDF).
Вот небольшая процедура, которая сделает это. Поместите эту процедуру в стандартный модуль кода:
Function MaxN(n&, r As Range)
Dim i&, j&, m#, t#, v
v = r.Value2
For i = 1 To UBound(v)
If UBound(v) - i + 1 >= n Then
t = 0
For j = i To i + n - 1
t = t + v(j, 1)
Next
If t > m Then m = t
Else
Exit For
End If
Next
MaxN = m
End Function
Затем на листе, где вы хотите, чтобы вычислить максимальную, выбрать ячейку, в которой вы хотели бы иметь возвращение расчета и ввести эту формулу:
=MaxN(10,A1:A100)
Вот и все.
С помощью этого UDF вы можете легко изменить «10» на все, что захотите, и вы можете легко отрегулировать расположение и размер вертикального диапазона, изменив формулу.
Вы хотите максимальную сумму ** ** или ** местоположение ** последовательных ячеек? –
Это очень сложная задача для формулы. Вы открываете решение для функции User Defined Function? –