VBA公式不适用于从2007年到2012年的转换

以下代码用于计算标准误差(标准偏差/样本数量)。 但是,在非连续单元格上使用时,它会返回#VALUE! 而不是标准的错误。 我试图input公式作为一个数组。 它以前工作,但移动到一个新版本的Excel的新计算机后停止工作(2007年至2012年)

Option Explicit Function StdErr(numbers As Range) As Double Dim StdDev As Double Dim Size As Integer StdDev = WorksheetFunction.StDev_S(numbers) Size = WorksheetFunction.Count(numbers) StdErr = StdDev / Sqr(Size) End Function 

在电子表格中使用这个公式就像{= StdErr(A1,A3,A5)}

它适用于如果您使用一个连续的范围,如= StdErr(A1:A5)。 当你添加逗号时,它希望你传递另一个不在那里的variables。 为了允许未知数量的variables,它变得有点棘手,你必须使用一个变种。 见下文:

 Function StdErr(ParamArray Numbers() As Variant) As Double Dim StdDev As Double Dim Size As Integer StdDev = WorksheetFunction.StDev_S(Numbers) Size = WorksheetFunction.Count(Numbers) StdErr = StdDev / Sqr(Size) End Function