2017-03-29 11 views
1

私はVBAを初めとしています。私は、開始金額、特定の割引率でその金額を引き下げ、また与えられた金額を見つけるために割引率にn年を掛けるプログラムを作成しようとしています一定の年数に基づく割引キャッシュフロー。どのように私はこのコードをより効率的にするためのヒントがありますか?また、 "(100/1.01)+(100/1.01^2)+(100/1.01^3)"のように、異なる金額の合計を合計するためのループを使用するためのヒントを教えてください。前もって感謝します!DCFモデルのプリミティブVBAコードを改善する方法は?

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, "$0.00") 

End Sub 
+0

フォーミュラを使うとより簡単にできますか?一度に1つの変数を変更することができますか?固定CashFlowとDiscRateで1〜5年の結果を知りたいとします。または、UDF(User Defined Function)に変換し、ワークシート内で3つの入力範囲を使用できますか? – PatricK

答えて

1

あなたが持っているコードは綺麗で、割引キャッシュフローを作成するためにループが必要です。これは、あなたがしたいことを行う必要があります:

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, "$0.00") 

End Sub 
+0

ありがとうございました。最後の質問として、コード内の "1"と "0"の隣にある "#"は何ですか? – user5716047

+0

数字がダブルであることを示す場合、この[post](http://stackoverflow.com/questions)を参照してください。/2829128/funny-notation-with) – Amorpheuses

関連する問題