有没有一种方法可以将二维数组用作Excel的FORECAST函数中的Y参数?

时间:2019-05-17 11:36:56

标签: arrays excel forecast

Excel的FORECAST函数对“已知Xs”参数和“已知Ys”参数均采用一维数组,然后返回单个值作为答案。

我想对“已知Ys”参数使用2维数组,并返回一个1维数组作为答案。 换句话说,我想返回与一组Y值(数组)相对应的一组预测(数组),并覆盖相同的时间范围(X值)。 (有一个原因我需要这个...我需要将得到的结果乘以其他两个数组。)

但是,如果我采用一个效果很好的公式,例如     FORECAST.LINEAR($H$1,A2:G2,$A$1:$G$1) 然后将一维数组更改为二维(G7而不是G2):     FORECAST.LINEAR($H$1,A2:G7,$A$1:$G$1) 然后按Ctrl + Alt + Enter,我得到一个错误(#N / A)。 与趋势功能相同。

我知道某些Excel函数不喜欢将数组作为参数-尽管有时有一些解决方法(例如:Can Excel's INDEX function return array?)。但是我无法确定是否有可能在我的情况下“取消引用”这些东西……我当然没有设法在这里采用这种方法。

针对评论的附录:以下数据是具有代表性的(尽管实际数据有更多的行和列!)。第一行代表“已知的X”(这是时间标度),随后的几行是数据。我要结束的结果是一个数组,代表与X = 8对应的预测Y值...在这里,我相信 11.71; 14.43; 177.71; 25.71; 16.71; 10.86;

traffic manager query

1 个答案:

答案 0 :(得分:0)

这是一个尝试,我仍然不确定你要干什么,但是让我尝试一下。

我采用了UDF方式,我的假设是您向函数提供的行数与列数一样。

Function GetResult(RNG1 As Range, RNG2 As Range) As Double

Dim X As Double, RNG3 As Range, ARR() As Variant
ReDim ARR(RNG2.Rows.Count - 1)
For X = 1 To RNG2.Rows.Count
    Set RNG3 = Application.Intersect(RNG2, Rows(X + 1))
    ARR(X - 1) = Application.WorksheetFunction.Forecast(RNG2.Columns.Count + 1, RNG3, RNG1)
Next X

GetResult = Application.WorksheetFunction.Forecast(RNG2.Columns.Count + 1, ARR, RNG1.Value)

End Function

在您提供的示例数据上(提取第7列),看起来像这样:

enter image description here

该函数将为每条线创建一个预测,并将其存储在一维数组中。然后它将使用所有这些预测来创建最终预测。

这接近您的期望吗?