2013-10-31 69 views
0

我有一個函數可以生成兩個數組(XY)。在VBA中將數組從一個函數傳遞到另一個

我想通過將此數組傳遞給另一個函數BETA來對此函數中的兩個數組進行一些計算。這兩種功能都可以完全自行工作。我不知道如何正確地將數組傳遞給函數BETA。以下是適用於內功能的代碼:

Function BETA(ByRef X As Range, ByRef Y As Range) As Variant 

    Dim i As Long 
    Dim B As Double 
    Dim X_SUM As Double, Y_SUM As Double 
    Dim X_MEAN As Double, Y_MEAN As Double 

    X_MEAN = Application.WorksheetFunction.Average(X) 
    Y_MEAN = Application.WorksheetFunction.Average(Y) 


    For i = 1 To UBound(X) 

     X(i) = X(i) - X_MEAN 
     Y(i) = Y(i) - Y_MEAN 

    Next i 

    X_SUM = WorksheetFunction.Sum(X) 
    Y_SUM = WorksheetFunction.Sum(Y) 

    B = (X_SUM * Y_SUM)/(X_SUM)^2 


    BETA = B      
End Function 
+0

我沒有看到數組?你的意思是通過任何一個範圍? –

+0

如果你想從函數返回一個對象,你需要在返回時使用'Set'關鍵字。所以'設置BETA = X_SUM'試試 – 2013-10-31 09:08:12

+0

你究竟遇到了什麼問題?有沒有錯誤?如果是這樣,他們是什麼和什麼線? – user2140261

回答

0

幾個小點:

  1. Xÿ被聲明爲在函數頭部範圍,而是由用作陣列的功能體使用Ubound()
  2. 函數計算B,但從不公開它。你打算BETA=B作爲回報?
  3. BETA應在函數頭中聲明爲Double而不是Variant。
  4. 你真的打算修改函數體內的函數輸入嗎?
+0

我是VBA的新手,因此非常抱歉表達自己的錯誤...我打算BETA = B,對此。函數BETA用於生成X和Y的另一個函數中,其中X和Y是具有多個條目(如X =(X1,X2,X3,...))的雙精度。我打算使用X和Y作爲輸入來計算BETA = B。我不想修改X和Y.我對任何混淆都很感興趣 – FreshF

相關問題