[英]Goal seek exit year rises infinitely
我是VBA的新手。 我有一個基本的Excel 2010項目財務模型,我專門針對練習目標搜索宏和學習一些VBA而制作的。 我使用了這個宏(取自其他人的工作簿),並通過輸入所需的IRR成功地對其進行了調整,以找到PPA匯率。
但是,我試圖通過輸入所需的IRR再次對其進行調整以找到退出年份,這會導致退出年份無限增加。 理想情況下,我希望它只能搜索指定范圍內的一年並且只能取整數(即僅1-25年)
Private Sub CommandButton2_Click()
Equity_IRR_New = Range("D21").Value
Equity_IRR_Old = Range("C23").Value
Tariff_New = Worksheets("Sheet1").Range("C21").Value
Tariff_Old = 0
'Worksheets("Sheet1").Range("C21").Value = 100000'
If (Equity_IRR_New < Equity_IRR_Old) Then
Do Until (Equity_IRR_New >= Equity_IRR_Old)
ExitYr_Old = Worksheets("Sheet1").Range("C21").Value
ExitYr_New = ExitYr_Old * (0.999)
Worksheets("Sheet1").Range("C21").Value = ExitYr_New
Equity_IRR_Old = Range("C23").Value
Loop
End If
If (Equity_IRR_New > Equity_IRR_Old) Then
Do Until (Equity_IRR_New <= Equity_IRR_Old)
ExitYr_Old = Worksheets("Sheet1").Range("C21").Value
ExitYr_New = ExitYr_Old * (1.001)
Worksheets("Sheet1").Range("C21").Value = ExitYr_New
Equity_IRR_Old = Range("C23").Value
Loop
End If
Range("C21").Value = ExitYr_New
End Sub
先感謝您
問題是因為您的循環條件正在尋找Equity_IRR_New <= Equity_IRR_Old
,並且由於您在每次循環迭代中都Equity_IRR_New
,所以永遠不會滿足該條件。
根據注釋“'Worksheets(“ Sheet1”)。Range(“ C21”)。Value = 100000'“進行設置的方式,它將僅輸入第二個” if“塊,即:
If (Equity_IRR_New > Equity_IRR_Old) Then
Do Until (Equity_IRR_New <= Equity_IRR_Old)
ExitYr_Old = Worksheets("Sheet1").Range("C21").Value
ExitYr_New = ExitYr_Old * (1.001)
Worksheets("Sheet1").Range("C21").Value = ExitYr_New
Equity_IRR_Old = Range("C23").Value
Loop
End If
就像我在上面說的Equity_IRR_New
,由於語句ExitYr_New = ExitYr_Old * (1.001)
,因此Equity_IRR_New
的值在每個循環中Equity_IRR_New
在不斷增加,因此,如果它不小於等於Equity_IRR_Old
,它將永遠不會。 單元格“ C23”中的初始值是多少?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.