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

时间:2015-10-26 17:45:31

标签: excel vba excel-vba

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

例如,如果我的行是:

12
1
4
18个
9
3

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

我知道这相对简单,但这真的让我头疼。获胜者'在上面的场景中,A3:A5为10.333,但我会强调该范围 为3行。

1 个答案:

答案 0 :(得分:2)

这样做:

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

每次平均值较大时,我都会添加一个调试打印。

enter image description here