0

データ シートを調べて、列 G から R までの標準偏差を計算するマクロを実行しようとしています。プログラムを実行するたびに、ランタイム 1004 エラーが発生し、 WorksheetFunction クラス。約2週間前に実行したときはこのエラーは発生しなかったので、どうすればよいかわかりません。エラーが発生するコードのセクションは次のとおりです。

For i = 1 To lastFilledRow

    standardDeviationT = WorksheetFunction.StDev(Range("G" + CStr(i) + ":R" + CStr(i)))
    Range("AB" & CStr(i)) = standardDeviationT

Next i
4

1 に答える 1

0

StDev 関数には、少なくとも 2 つの数値を渡す必要があります。Range に 0 または 1 の値しかない場合、関数は失敗し、エラーが発生します。少なくとも 2 つを渡していることを確認するには、最初に Count を呼び出すことをお勧めします。

For i = 1 To 100
    If WorksheetFunction.Count(Range("G" + CStr(i) + ":R" + CStr(i))) >= 2 Then
        standardDeviationT = WorksheetFunction.StDev(Range("G" + CStr(i) + ":R" + CStr(i)))
        Range("AB" & CStr(i)) = standardDeviationT
    End If
Next i

また、最新の Excel IE 2010 を使用している場合は、Micorsoft が推奨しているように、StDev_S の使用に切り替えることを検討することをお勧めします。これは、MSDN の StDevからの Exactです。

この関数は、精度が向上し、その使用法をより適切に反映する名前を持つ 1 つ以上の新しい関数に置き換えられました。この関数は、以前のバージョンの Excel との互換性のために引き続き使用できます。ただし、下位互換性が必要ない場合は、新しい関数を使用することを検討する必要があります。これは、新しい関数の方が機能がより正確に記述されているためです。

新しい関数の詳細については、StDev_Sメソッドを参照してください。

于 2012-10-05T23:29:23.687 に答える