计算钟形曲线值

时间:2014-08-03 14:52:58

标签: vba ms-access bell-curve

在管理大型建筑项目的合同和变更的MS Access 2007应用程序中,我需要在一段时间内创建表示合同价值的贝尔曲线。

例如,一个5亿美元的合同运行,比如40个月,我需要一个Bell Curve,在这40个月内分配合同价值。我们的想法是在合同期内提供现金流量预测的起点。

使用VBA,我曾想过创建“每月一次”。将值存储在临时表中,以便以后在报表图表中使用。但是,我试图找出算法。

关于如何解决这个问题的任何建议都将非常受欢迎。

1 个答案:

答案 0 :(得分:0)

您将需要从Excel借用的= NORMSDIST()函数,如下所示:

Public Function Normsdist(X As Double) As Double
Normsdist = Excel.WorksheetFunction.Normsdist(X)
End Function

需要一些统计知识才能使用此功能在x个时段内分配现金流,假设标准正常。我创建了一个Excel工作表来演示如何使用此函数并在此处发布:

Normal Distribution of a cash flow sample .XLSX

如果由于某种原因您讨厌使用Excel功能,您可以提取任何统计文本或搜索生成一系列正常值的公式。在您的情况下,您希望在每个尾部分配三个标准偏差的现金流量。这样总共有六(6)个标准偏差。为了将6个标准差划分为40个月,每个数据点(月)的6/40 = 0.15标准差。如您所建议的那样,使用for / next / step或类似的循环将其生成到临时表,并使用柱形图对其进行绘图(如上面的Excel示例所示)。只需要一点点VBA编码就可以根据用户提供的月数和总合约来变量。

标准正态分布的平均值为0,标准差为1.如果您想要更平坦的钟形曲线,则可以使用NormDist函数来指定均值和st。 dev的。