2015-08-26 39 views
3

我想使用VBA将标准错误函数添加到Excel中,到目前为止,我只是标准偏差函数的变体。我在线获取了函数,并在最后一行中对其进行了更改,并将其除以总数据点的平方根。这似乎不适用于我。计算标准错误V​​ba

编辑:当我尝试使用Excel电子表格上的函数时,无论数据集是什么,它都会显示为0。

Function StdErr(numbers As Range) As Double 
    Dim i As Integer 
    Dim xbar As Double 
    Dim x As Double 
    xbar = WorksheetFunction.Average(numbers) 
    For i = 1 To numbers.Count 
     x = x + (numbers.Item(i).Value - xbar)^2 
    Next i 
    SrdErr = (x/numbers.Count)/(Sqr(numbers.Count)) 
End Function 
+0

它不起作用,因为?你是否遇到错误,或者它没有产生正确的价值,会发生什么? –

+0

当我尝试在Excel电子表格上使用该函数时,无论数据集是什么,它都会显示为0。对不起,不澄清。 –

+0

是否有任何理由不使用工作表函数来进行标准偏差? –

回答

3

您的代码出现几个问题:(1)最后一条语句拼写错误,函数名称SrdErr而不是StdErr。这就是为什么你得到0.(2)根据Microsoft documentation,函数定义本身是不正确的。

试试这个:

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 

这是一个好主意,包括Option Explicit这样就可避免愚蠢的拼写错误这样的。

+0

谢谢!在我修正了错字之后,计算结果就失效了,但现在它可以正常工作了! –

2

你得到零的原因是由于错字。

SrdErr =最后应该是StdErr =

2

你可以很直接地做到这一点:

Function StdErr(numbers As Range) As Double 
    StdErr = Application.WorksheetFunction.StDev_S(numbers)/(Sqr(numbers.Count)) 
End Function 

你就好像有两个不正确的分母和过所有分子缺少平方根的公式,至少是你正在试图做的this formula