VBA无法获取Worksheet类的StDev属性

时间:2012-10-05 22:59:03

标签: vba runtime-error worksheet-function

我正在尝试运行一个遍历数据表的宏并计算列G到R的标准偏差。每次运行程序时,我都会收到运行时1004错误,说它无法获取StDev WorksheetFunction类的属性。我大约两周前运行它时没有出现这个错误,所以我不知道该怎么办。以下是发生错误的代码部分。

For i = 1 To lastFilledRow

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

Next i

1 个答案:

答案 0 :(得分:0)

StDev函数至少需要传递两个数字。如果您的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 I.E 2010,您可能需要考虑切换到使用StDev_S,正如Micorsoft推荐的那样。这是MSDN on StDev的努力。

  

此功能已被一个或多个新功能所取代   可以提供更高的准确性,其名称更能反映他们的   用法。此功能仍可用于与早期版本兼容   版本的Excel。但是,如果不需要向后兼容,   你应该考虑从现在开始使用新功能,因为它们   更准确地描述他们的功能。

     

有关新功能的更多信息,请参阅StDev_S方法。