Arrays 在VBA中将数组从一个函数传递到另一个函数

Arrays 在VBA中将数组从一个函数传递到另一个函数,arrays,excel,vba,Arrays,Excel,Vba,我有一个函数可以生成两个数组(X和Y) 我想通过将此数组传递给另一个函数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 D

我有一个函数可以生成两个数组(
X
Y

我想通过将此数组传递给另一个函数
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
有几个要点:

  • XY在函数头中声明为范围,但通过使用Ubound()
  • 该函数计算B,但从不公开它。您是否打算
    BETA=B
    作为回报
  • BETA应在函数头中声明为Double而不是Variant
  • 您真的打算修改函数体中的函数输入吗

  • 我没有看到数组?你的意思是通过一个范围吗?如果你想从一个函数返回一个对象,你需要在返回时使用
    Set
    关键字。所以
    Set BETA=X_SUM
    试试看你到底遇到了什么问题?有什么错误吗?如果是这样的话,它们是什么?我是VBA新手,因此非常抱歉表达错误。。。我打算BETA=B,sry。函数BETA用于生成X和Y的另一个函数中,其中X和Y是具有多个条目的双倍数,例如X=(X1、X2、X3,…)。我确实打算使用X和Y作为计算BETA=B的输入。我不想修改X和Y。对于任何混淆,我是sry