在Excel中查找连续行的范围,得出最高的平均总和

我有一个Excel电子表格,可以包含10到200行的任何东西。 我想循环所有范围组合(三行或更多)来find产生最高平均值的行的范围。

例如,如果我的行是:

12
1
4
18
9
3

然后从A1:A3开始,然后从A1:A4开始到A1:A6,然后移到A2:A4,然后是A2:A5,依此类推,直到所有三行或更多行的范围组合平均。 然后我想要突出显示,甚至MsgBox的平均值最高的范围。

我知道这个比较简单,但是真的让我伤脑筋。 上述情况中的“胜利者”将是10.333的A3:A5,但我会强调范围不一定是3行。

这将做到这一点:

Sub bp() Dim avg As Double Dim rng As Range Dim ws As Worksheet Dim i&, t& Dim avgAdd As String Set ws = ActiveSheet With ws Set rng = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)) For i = 1 To rng.Rows.count - 2 For t = i + 2 To rng.Rows.count If WorksheetFunction.Average(.Range(.Cells(i, 1), .Cells(t, 1))) > avg Then avg = WorksheetFunction.Average(.Range(.Cells(i, 1), .Cells(t, 1))) avgAdd = .Range(.Cells(i, 1), .Cells(t, 1)).Address End If Next Next MsgBox avgAdd & ":" & avg End With End Sub 

每次平均值更大时,我都会添加一个debugging打印。

在这里输入图像说明