2016-06-28 75 views
0

我正在尝试编写一个程序,该程序将根据几列的前50个值计算控制限制。 DateTime_Column是一个整数,是我需要执行for循环的最后一列。尝试计算VBA中的平均值和圣DEV,但始终得到整数?

我的问题是我用来计算平均值和st偏差的函数似乎没有工作。我得到整数时,我应该得到小数。

Dim Ave As Long 
    Dim STDev As Long 
    ReDim UCL(DateTime_Column) As Long 
    ReDim LCL(DateTime_Column) As Long 
    DateTime_Column As Integer 

     DateTime_Column = WorksheetFunction.match("Date_Time", Range("A1:AZ1"), 0) 

    For i = 1 To DateTime_Column 

    ColLtr = Replace(Cells(1, i).Address(True, False), "$1", "") 
    Ave = Application.Average(Range(ColLtr & "1:" & ColLtr & "50")) 
    STDev = Application.STDev(Range(ColLtr & "1:" & ColLtr & "50")) 
    UCL(i) = Ave + 3 * STDev 
    LCL(i) = Ave - 3 * STDev 

    Next i 

回答

1

的问题是,您声明为AveSTDevLong类型,它是一个整数类型。如果你想让它们保持浮点数,你应该声明它们是Double而不是Long