Как мне найти самый большой непрерывный диапазон длины n в большем диапазоне - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь найти ссылки на ячейки для самого большого непрерывного подмножества значений n в моем диапазоне.

Подобный вопрос был опубликован ранее, ( ссылка ), однако он вернул только сумму подмножества, как мне найти ссылки на конкретные ячейки?

ДляНапример, если n = 3, самый большой диапазон подмножества будет A3: A5

Cell    Value
A1  2
A2  5
A3  8
A4  2
A5  9
A6  7
A7  2
A8  9
A9  5
A10 3

Ниже приведен код Excel Hero по общей ссылке выше, который возвращает сумму подмножества

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

1 Ответ

0 голосов
/ 05 июля 2019

Используйте это:

Function MaxN(n&, r As Range)
    Dim i&, j&, m#, t#, v, str
    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
            str = i
            End If
        Else
            Exit For
        End If
    Next
 MaxN = Range(Cells(str, r.Column), Cells(str + n, r.Column)).Address
End Function
...