3

我正在尝试使用 VBA 将标准误差函数添加到 excel 中,到目前为止我所拥有的只是标准偏差函数的变体。我在线获取了函数并对其进行了更改,因此在最后一行中将其除以总数据点的平方根。这似乎对我不起作用。

编辑:当我尝试在 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
4

3 回答 3

3

您的代码存在几个问题:(1)最后一条语句拼错了函数名SrdErr而不是StdErr. 这就是您得到 0 的原因。 (2) 根据Microsoft 文档,函数定义本身不正确。

尝试这个:

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这样您就可以避免像这样愚蠢的拼写错误。

于 2015-08-26T16:02:35.090 回答
2

你得到零的原因是因为一个错字。

SrdErr =最后应该是StdErr =

于 2015-08-26T15:55:57.680 回答
2

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

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

您的公式似乎在整体分子中既有不正确的分母,也有缺失的平方根,至少您正在尝试执行此公式

于 2015-08-26T16:03:34.417 回答