我正在尝试在VBA中编写一个函数来计算三个数字的标准偏差和范围。如果确定所有数字都是---那么功能就应该输出---作为答案。如果它们中的所有三个都不是---那么标准偏差或范围应该用剩余的数字计算,同时忽略---数字。数字由用户输入。这是我为范围和标准差计算编写的代码。通过使用内置的excel WS函数,如果它们不是数字,它已经忽略了输入,我能够绕过那个棘手的位。然而,可见,我无法让代码识别所有三个是---注册为---。
计算范围的功能-------------------------------
函数范围(ParamArray ObservedValues())
ObservedValues(i)=“---” 范围=“---” WEND
Max = Application.WorksheetFunction.Max(ObservedValues)
Min = Application.WorksheetFunction.Min(ObservedValues)
Range = Max - Min
结束功能
计算标准偏差的功能(多次尝试)
第一次尝试
功能SD(ObservedValueA,ObservedValueB,ObservedValueC,ObservedMean)
如果ObservedValueA =“---”并且ObservedValueB =“---”并且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)
结束功能
答案 0 :(得分:0)
说出你的3个值来计算A1中的sd: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