2016-06-28 76 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