1

我在尝试着

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

    函数 MAE(actualData As Range, predictData 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 传递给用户定义的函数。根据您的建议,我修改了代码,当我通过两个单列时它运行良好。

但是当我通过两行时,它就不起作用了。我收到#Value 错误。对此有什么建议吗?

4

1 回答 1

3

您通过索引引用变体的方式存在问题。

data如果您在 Locals 窗口中查看,您可以看到该结构是每个和的二维数组forecast,但您将它们称为一维数组,这将导致公式失败。

只需修改为:

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

这应该避免错误。

这是 Locals 窗口,它显示维度并让您浏览数组。

本地人窗口的屏幕截图

于 2013-05-17T03:27:11.860 回答