お世話になります。

業務で、今度の四月から開始される『働き方改革』の中に、複数月の平均が80時間を超えてはならないと
いうのがあり、それを求めるためのツールをAccessで作成しています。

四月から始まり、三月で終わる一年の期間の中で、二ヶ月以上の連続した組み合わせ(4-5,4-5-6,4-5-6-7~1-2-3,2-3まで)の平均を算出するのですが、数を数えてみると合計で66パターンの組み合わせができてしまいます。これを人数分だけ計算するとなると、かなりの時間がかかると思います。
勿論、一つ一つ行って、一度でも80時間超えがあれば、そこで確認済みにすれば良い話ではあるのですが、これをもっと効率的にやりたいと思っています。

上記のような、『総当たりの平均』を求めるやり方で、もっと効率の良い方法はありますでしょうか?SQLなどでできれば、とてもエレガントだとは思いますが…。SQLの平均の記述が解らないのではなく、コードのようにループさせなくて済む方法です。

強引にコードに直すと、下記のようになると思います。

   Dim arr(11) As Long ' ここでは宣言しかしていませんが、既に中身があるものと思ってください。
   Dim d0 As Long, d1 As Long, d2 As Long
    Dim val As Double
    Dim flg As Boolean

    flg = False
    For d0 = 0 To 11 - 1
        For d1 = d0 + 1 To 12 - 1
            val = 0#
            For d2 = d0 To d1
                val = val + arr(d2)
                If (val / ((d1 - d0) + 1) > 80) Then
                    flg = True
                    GoTo End_for
                End If
            Next
        Next
    Next

End_for:

よろしくお願いいたします。