如何改进 DCF 模型的原始 VBA 代码?

How to improve primitive VBA code for DCF model?

我是 VBA 的新手,我一直在尝试创建一个程序,允许我获取起始现金金额,按一定的折扣率对该金额进行折扣,然后再乘以折扣率以 n 年计算基于给定年数的给定贴现现金流量。有没有人对我如何使这段代码更有效率有任何提示?此外,使用循环将不同金额的现金相加的技巧有哪些,例如“(100/1.01) + (100/1.01^2) + (100/1.01^3)?”提前致谢!

Sub DCF()

Dim z As Double, CashFlow As Double, DiscRate As Double, Periods As Double

CashFlow = InputBox("Enter initial cash flow: ", "Cash Flow")
DiscRate = InputBox("Enter discount rate in decimal form: ", "Discount Rate")
Periods = InputBox("How many periods (in years) are there?", "Periods")

z = CashFlow / (1 + DiscRate) ^ Periods

MsgBox Format(z, "[=11=].00")

End Sub

你的代码很好,只需要一个循环来创建贴现现金流。这应该可以满足您的要求:

Sub DCF()

  Dim z As Double, CashFlow As Double, DiscRate As Double, Periods As Double: z = 0#

  CashFlow = InputBox("Enter initial cash flow: ", "Cash Flow")
  DiscRate = InputBox("Enter discount rate in decimal form: ", "Discount Rate")
  Periods = InputBox("How many periods (in years) are there?", "Periods")

  Dim i As Integer
  For i = 1 To Periods:
    z = z + CashFlow / (1# + DiscRate) ^ i
  Next

  MsgBox Format(z, "[=10=].00")

End Sub