将行范围传递给Excel用户定义函数并将其分配给数组
我在尝试着
- 将两个范围(多列单行)传递给Excel 2007中的用户定义函数,
-
然后将其分配给一个数组进行处理。
函数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议?
这是你通过索引引用你的变体的一个问题。
如果您在“本地”窗口中查看,则可以看到该结构对于每个data
和forecast
都是二维数组,但是您将它们称为一维数组,这将导致公式失败。
简单修改为:
error = data(i, 1) - forecast(i, 1)
这应该避免错误。
这里是本地窗口,它显示了尺寸,并让你浏览数组。