VBA无法获取工作表类的StDev属性

VBA无法获取工作表类的StDev属性,vba,runtime-error,worksheet-function,Vba,Runtime Error,Worksheet Function,我试图运行一个宏,该宏通过数据表计算G列到R列的标准偏差。每次运行该程序时,我都会收到一个运行时1004错误,表示无法获取WorksheetFunction类的StDev属性。大约两周前我运行它时没有这个错误,所以我不知道该怎么办。下面是代码中发生错误的部分 For i = 1 To lastFilledRow standardDeviationT = WorksheetFunction.StDev(Range("G" + CStr(i) + ":R" + CStr(i)))

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

For i = 1 To lastFilledRow

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

Next i

StDev函数要求至少传递两个数字。如果您的范围只有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,您可能想考虑切换到使用StEdvIs,正如Microsoft建议的那样。这里有一个来自于

此函数已替换为一个或多个新函数 可能提供更高的准确性,谁的名字更能反映他们的 用法。此功能仍然可以与早期版本兼容 Excel版本。但是,如果不需要向后兼容, 你应该考虑从现在起使用新的功能,因为它们 更准确地描述它们的功能

有关新函数的更多信息,请参见方法