【问题标题】:VBA writing code for standard deviation and Range标准差和范围的VBA编写代码
【发布时间】:2015-06-14 19:37:29
【问题描述】:

我正在尝试在 VBA 中编写一个函数来计算三个数字的标准差和范围。如果所有数字都被确定为 --- 那么函数应该输出 --- 作为答案。如果所有三个都不是 --- 那么标准偏差或范围应该用剩余的数字来计算,同时忽略 --- 数字。数字由用户输入。这是我为范围和标准偏差计算编写的代码。通过使用内置的 excel WS 函数,如果它们不是数字,它已经忽略了输入,我能够绕过那个棘手的位。但是,正如所见,我无法让代码识别所有三个都何时---注册为---。

计算范围的功能-------------------------------

函数范围(ParamArray ObservedValues())

而 ObservedValues(i) = "---" 范围=“---” 温德

    Max = Application.WorksheetFunction.Max(ObservedValues)
    Min = Application.WorksheetFunction.Min(ObservedValues)

    Range = Max - Min

结束函数


计算标准差的函数(多次尝试)

第一次尝试

函数 SD(ObservedValueA, ObservedValueB, ObservedValueC, ObservedMean)

如果 ObservedValueA = "---" And ObservedValueB = "---" And ObservedValueC = "---" 那么 SD =“---” 结束如果

If ObservedValueA <> "---" Then
    a = 1
    x = ObservedValueA - ObservedMean
        Else
        a = 0
        x = 1
End If

If ObservedValueB <> "---" Then
    b = 1
    y = ObservedValueB - ObservedMean
        Else
        b = 0
        y = 1
End If

If ObservedValueC <> "---" Then
    c = 1
    Z = ObservedValueC - ObservedMean
        Else
        c = 0
        Z = 1
End If

SD = Sqr((1 / (a + b + c)) * x ^ 2 * y ^ 2 * Z ^ 2)

结束函数

第二次尝试

函数 SD(ParamArray Number_Input())

而 Number_Input = "---" SD =“---” 文德 SD = Application.WorksheetFunction.StDev(Number_Input)

结束函数

【问题讨论】:

    标签: excel vba standard-deviation


    【解决方案1】:

    说出你计算 sd 的 3 个值在 A1:A3 中

    Function sd()
        Dim Val As Variant
        Val = [STDEV.S(IF(NOT(ISNA(A1:A3)),A1:A3))]
        If IsError(Val) Then
            sd = "---"
        Else
            sd = Val
        End If
    End Function
    

    【讨论】:

    • 感谢爱德华的帮助。然而,这并不能完全解决我的问题,用户输入的数字并不总是按 A1:A3 中的顺序排列,它们通常会出现在 G4、Y2 和 J17 等工作表上的随机位置。这种计算需要对不同的细胞进行多次。这就是我编写代码的原因,以便变量由单元格选择确定。
    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    相关资源
    最近更新 更多