将行范围传递给Excel用户定义函数并将其分配给数组

我在尝试着

  1. 将两个范围(多列单行)传递给Excel 2007中的用户定义函数,
  2. 然后将其分配给一个数组进行处理。

    函数MAE(actualData As Range,forecastData As Range)As Double

    Dim data Dim forecast Dim error As Double Dim average As Double Dim i As Long data = Application.Transpose(actualData) forecast = Application.Transpose(forecastData) average = 0 error = 0 For i = 1 To UBound(data) error = data(i) - forecast(i) If error < 0 Then error = error * -1 End If average = error + average Next i MAE = average / UBound(data) End Function 

我之前在这个论坛发布了一个主题,这里是链接

在那个线程中,我询问如何将一个列作为Range传递给用户定义的函数。 在你的build议之后,我修改了代码,并且当我传递两个单列时它工作的很好。

但是,当我通过两行,那么它不工作。 我正在#Value错误。 有关于此的任何build议?

这是你通过索引引用你的变体的一个问题。

如果您在“本地”窗口中查看,则可以看到该结构对于每个dataforecast都是二维数组,但是您将它们称为一维数组,这将导致公式失败。

简单修改为:

 error = data(i, 1) - forecast(i, 1) 

这应该避免错误。

这里是本地窗口,它显示了尺寸,并让你浏览数组。

当地人窗口的屏幕截图