Microsoft Excel 中的财务建模/设计模式
设计模式用于相同的需求一再出现的地方。它们是设计模型的标准且经过良好测试的方法,您可以构建一个模式库,以便更容易地设计专业解决方案。
请注意,下面模式的名称不是正式名称,因为 Excel 没有普遍接受的模式,但它们是为本书的目的而创建的。您可能不会在其他地方找到这些名称的使用。
以下表格模式是所有电子表格用户都熟悉的一种。
这是构建模型最简单、最明显的方法,它用于大多数商业电子表格。
它有两个主要问题
1. 公式必须在每一列中正确复制 - 这是常见的错误
2. 当公式塞进连续的列中时,很难检查它们。几乎没有解释的空间,用户一次只能看到一个公式(除非他们打开公式视图,然后你无法看到值),并且用户一次只能看到几列。这意味着,随着模型变得更加复杂,这种模式可能变得非常难以理解,甚至无法使用。
在更复杂的模型中,使用上面的表格模式可能很难将所有内容都放在一张纸上。
模型可以分为几部分,如税收、折旧、收入现金流等,每部分都可以放在一个单独的“块”中,通常放在单独的纸上。然后在汇总纸上合并结果。
这是一种在大型金融模型中常用的模式,例如收费公路、发电站等,其中大量现金流会随着时间的推移而预测,并且模型可以分解成逻辑块。模型可能变得非常大,例如 15 兆字节,有 3,000-4,000 个独特的公式。
优点是每张纸都可以独立检查,并且每张纸都有一个特定主题。当问题很复杂时,如果您能够一次检查一小部分问题,这将很有帮助。
关于项目融资的更多信息
虽然这种方法有助于将复杂问题分解成小块,但重要的是要检查各个块之间的连接,并确保它们正确地连接起来,因为大型模型可能会变得非常混乱。您还需要非常仔细地设计模型,因为它以后将很难重新排列。
以下方法是表格模式的强大替代方法。它适用于您必须对许多行数据进行一系列计算的情况。
您首先基于单个数据记录构建一个计算纸张,
- 在纸张顶部显示该数据,
- 列出您需要的任何假设(边做边解释),然后
- 在纸张上向下设置计算,尽可能分散。
结果是,给定任何一个数据记录(即行),您可以在单个行中清楚准确地生成正确的结果。
这显然有利于使计算比将它们塞进单行中的列更容易检查。当然,没有免费的午餐,缺点是您一次只能做一行,这很笨拙。
下一步是使用几十行 VBA 代码依次将每个数据记录加载到此纸张中,计算,并将每个记录的结果导出到输出纸张上的单独行中。最终得到一张输出纸张,其中包含每个数据记录的一行结果。
这样做有几个优点
- 您对所有记录使用一组工作表计算 - 无需将它们复制到每个记录的所有行中
- 计算比表格模式更容易检查,因为您可以将它们分散到整个纸张上,并且可以拉入任何数据记录以详细查看它
- 所有业务逻辑都在工作表中,而不是在 VBA 中,VBA 只是自动执行了该过程
- 数据和结果纸张与计算纸张完全分开,并且它们没有可能弄乱的公式 - 这种分离是一个非常重要的设计原则
- 如果您想打印每个记录的单独结果(例如,您想向每个人发送信件),VBA 可以为每个记录打印一个格式特殊的输出纸张,因为它循环遍历所有记录
这种方法比表格方法需要更多的技能才能构建,但代码可以通用化,因此不需要任何更改,无需编程技能。
VBA 可用于读取数据和假设,执行所有计算,然后将结果放回纸张中。
当有大量数据,或者工作表速度很慢时,这是一种非常强大的方法,因为
- VBA 可以非常快速地处理数据,并且
- 它可以从数据文件、数据库和网站读取和写入数据,
- 并且它非常紧凑,因为它所有的计算都在内存中完成,并且一旦结果被放回纸张中就会被丢弃
这种强大的功能需要付出相当大的代价,因为
- VBA 需要扎实的编程技能
- 如果需要更改,以后可能很难适应
- 它可能非常难以检查,虽然一种解决方案是使用选定的输出生成测试工作表,以更容易地了解发生了什么
通常,VBA 应该用于涉及大量数据的复杂模型,如模拟或非常大的数据文件。