Office中国论坛/Access中国论坛
标题:
如何用VBA代码进行这样的计算
[打印本页]
作者:
GAOZHONG
时间:
2011-2-13 12:21
标题:
如何用VBA代码进行这样的计算
A列中有一个数组:22 、 14 、 16 、 18、 24 、20,平均值是19,现在要统计数组中的每个数与平均值的差的总和,VBA代码如何写?请大家帮帮我,多谢了!
作者:
tmtony
时间:
2011-2-13 13:49
我不太懂excel
你试试陈峰这个 函数
------------------计算总体参数为n-1的标准差---------------
'--输 入:Expr-1[, Expr-2, ... [, Expr-n]]
'--输 出:计算总体参数为n-1的标准差
'--作 者:陈峰
'---------------------------------------------------
Function Stdev(ParamArray Expr() As Variant) As String
Dim curSun As Double, curAverageBad As Double, curBadSquare As Double
Dim curAccuracy As Double
Dim ExprLen As Long
ExprLen = UBound(Expr) + 1
curAccuracy = Val("10000000000000000")
For i = 0 To ExprLen - 1
curSun = curSun + Val(Expr(i))
Next
curAverageBad = Fix(curSun / ExprLen)
For i = 0 To ExprLen - 1
curBadSquare = curBadSquare + (Val(Expr(i)) - curAverageBad) ^ 2
Next
If ExprLen <= 20 Then
Stdev = Fix(100 * Sqr(curBadSquare / (ExprLen - 1)) * curAccuracy + 0.5) / curAccuracy / 100
Else
Stdev = Fix(100 * Sqr(curBadSquare / ExprLen) * curAccuracy + 0.5) / curAccuracy / 100
End If
End Function
'*************************************************************************
作者:
GAOZHONG
时间:
2011-2-13 15:36
谢谢
作者:
roych
时间:
2011-2-14 09:19
本帖最后由 roych 于 2011-2-14 10:34 编辑
总和不是0么?还是负数要取绝对值?如果负数取绝对值的话,其实不一定非要用VBA的,我觉得数组公式就很好:
[attach]44822[/attach]
顺便说一下,王站的函数是用来计算标准方差的,而不是像LZ所以为的那样。
作者:
GAOZHONG
时间:
2011-2-14 11:15
本帖最后由 GAOZHONG 于 2011-2-14 11:16 编辑
谢谢4#回答,其实我要的就是标准差的函数,但我们行业上的标准差计算方法有点不一样,如图:file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/MTHCMAT2B(1KF4%7D%7D15~~BDK.jpg,fcui是数组中的每一个值,n是数组中的数据个数 ,mfcu是数组中全部数据的平均值,请教该如何编写这个函数?
作者:
roych
时间:
2011-2-14 15:23
回复
GAOZHONG
的帖子
看不到图片~~
作者:
GAOZHONG
时间:
2011-2-16 14:52
本帖最后由 GAOZHONG 于 2011-2-16 14:53 编辑
谢谢roych的帮助,我已经做搞定了
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3