簡體   English   中英

目標尋求退出年無限增加

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM