如何改进 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
我是 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