【问题标题】:Calculate Bell Curve Values计算钟形曲线值
【发布时间】:2014-08-03 14:52:57
【问题描述】:

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

例如,一份价值 5 亿美元的合同有效期为 40 个月,我需要一个钟形曲线来在这 40 个月内分配合同价值。这个想法是在合同有效期内为现金流量预测提供一个起点。

使用 VBA,我曾想过创建“每月”值并将它们存储在临时表中,以供以后在报告图表中使用。但是,我一直在尝试制定算法。

任何关于我如何解决这个问题的建议将不胜感激。

【问题讨论】:

  • ....你能解决这个问题吗?

标签: vba ms-access bell-curve


【解决方案1】:

您将需要从 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) 个标准差。将 40 个月除以 6 个标准差,每个数据点(月)为 6/40 = 0.15 个标准差。按照您的建议,使用 for/next/step 或类似的循环将其生成到临时表中,并用柱形图绘制它(如上面的 Excel 示例所示)。只需要一点 VBA 编码就可以根据用户提供的月数和总合同来制作这个变量。

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

【讨论】: