繁体   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