1
Excelの表では、31列の数値データの15万行のセットがあります。 1列は30回の変数に対応し、5000回シミュレートされました。より正確には、最初の30行は最初のシミュレーションに対応します。 私は各変数の中央値を計算したいと思っています。つまり、計算する中央値は30 * 31です。私はこのコードを書いています:このVBAコードは無期限にループしていますか?
Function median_simulation()
Dim feuille_statistiques As Worksheet, feuil1 As Worksheet
Dim term As Integer
Set feuil1 = Worksheets("Feuil1")
Set feuille_statistiques = Worksheets("Statistiques")
For i = 102 To 131
For j = 2 To 32
Dim rng2 As Range
term = feuille_statistiques.Cells(i, 1).Value
Set rng2 = feuil1.Range(feuil1.Cells(1 + term, (j + 5)), feuil1.Cells(1 + term, (j + 5)))
For k = 1 To 4999
Set rng2 = Union(rng2, feuil1.Cells(30 * k + 1 + term, (j + 5)))
Next k
feuille_statistiques.Cells(i, j).Value = WorksheetFunction.median(rng2)
Next j
Next i
End Function
私は理由を知りませんが、このコードを実行しようとすると、決してコンピューティングが終わりません。しかし、私は、私はjとjを凍結するとき(私はj = 2と私は= 102で試してみた)コードが動作していると思うこれはいくつかのメモリの問題ですか?私のコードは最適ではないのですか?それを改善する方法はありますか?
についてこれは、無限ループを引き起こすことはありませんが、あなたはループ内で何度もRNG2を調光するべきではありません。ループの外側でそれを一度宣言し、ループ内で繰り返し設定します。 – Jeeped
@Jeepedありがとう、私はそれを試みるつもりです。 – Gannicus
'median'は配列に作用するので、実際の範囲オブジェクトではなく配列を使用してください.'Dim a()As Variant:a =配列(1,5,10,11,12,13,500,7000): Debug.Print Application.WorksheetFunction.Median(a) ' –