【发布时间】:2013-05-11 21:38:07
【问题描述】:
我正在尝试
- 将两个范围 - 多列单行 - 传递给 Excel 2007 中的用户定义函数,
-
然后将其分配给数组进行处理。
Function 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
我之前在这个论坛发过一个帖子,这里是link
在那个线程中,我询问了将单个列作为 Range 传递给用户定义的函数。根据您的建议,我修改了代码,当我通过两个单列时它运行良好。
但是当我通过两行时,它就不起作用了。我收到#Value 错误。对此有何建议?
【问题讨论】:
-
感谢 KazJaw 的编辑,我将空格用于代码,但它不起作用。
-
您不需要用户定义的函数来执行此计算。例如,如果
A1:A8和B1:B8是您要比较的范围,您可以通过在工作表单元格中输入=AVERAGE(ABS(B1:B8-A1:A8))作为array formula 来计算平均绝对差值(即,通过按Ctrl+Shift +Enter 而不是在输入公式后仅 Enter)。 -
非常感谢您节省了我的时间,这是一个很好的建议。我现在会使用它,但我仍然会尝试为此开发代码,看看它为什么不起作用。
标签: arrays excel vba range user-defined-functions