0

1000 エントリの 1 次元配列があります。この配列の一部をループして、そのサブグループの平均を計算したいと思います。私がこれまでに行ったことは次のようになります。

        Temp = Array(myArray)

        Temp_Range = Application.Index(Temp, Evaluate("Row(1:10)"))

        Average(i) = Application.Average(Temp_Range)

これにより、最初の 10 行の平均を計算できます。ただし、これはまったく動的ではありません。この配列のサブグループを操作する別の方法があるかどうか疑問に思っていました (最終的にそれらをループできるようにするため)。

助けてくれてありがとう、私はこれを理解することができません...

更新: ここでコードを St.Dev で試しました (平均的ではありません)。できます!どうもありがとう。ただし、コードは非常に遅いです。それをより速くする方法はありますか?

ここでループ: Return は 1000 個の戻り値の配列です。私は、毎日のリターン データの 1 年間の標準偏差を計算することを目指しています。

    For i = 2 To n

    If Year(Dates(i)) > Year(Dates(i - 1)) Then

        Test = Application.Index(Return, Evaluate("Row(" & C & ":" & (i - 2) & ")"))

        Vola(M) = Application.StDev(Test) * Sqr(252)

        M = M + 1
        C = i - 1

    Else

        Test = Application.Index(Return, Evaluate("Row(" & C & ":" & (i - 1) & ")"))

        On Error Resume Next
        Vola(M) = Application.StDev(Test) * Sqr(252)

    End If

Next i
4

1 に答える 1

0

これらをどのようにループしているかについてこれ以上知らなくても、次のことができます。

Dim frstRow as Long, lstRow as Long

'within your loop, assign the values to frstRow, lstRow

Temp_Range = Application.Index(Temp, Evaluate("Row(" & frstRow & ":" & lstRow &")"))
于 2013-04-25T13:22:15.473 に答える