【问题标题】:Excel VBA formula for APRAPR 的 Excel VBA 公式
【发布时间】:2015-01-20 16:14:36
【问题描述】:

根据以下条件如何计算年利率 (APR):

A - 开始时借入的贷款(1000 美元),
B - 借款人分期支付的总贷款最终成本的总和(美元) 2000),
c - 每年的复利周期数(52 周),
k - 偿还贷款的周期数(60 周)

文献中的所有公式都使用名义利率(也是 Excel Effective 函数),但这里我们没有这个参数。

我的意思是:http://en.wikipedia.org/wiki/Annual_percentage_rate

我已经构建了一个电子表格,我可以在其中通过更改名义利率使用 Excel Solver 找到 APR。难道没有更优雅的解决方案吗?

【问题讨论】:

  • @pnuts 看看这个:provident.com.mx 至于今天(2015-01-22),登陆页面上有提供贷款的权利。你借了1000比索。 31 周后您必须偿还 1890 比索。如果具有这些参数的贷款的复利是每周一次,那么 APR=857%。谷歌pay day loans:-)

标签: excel excel-formula rate vba


【解决方案1】:

这里是 APR 的代码。对于优化搜索机制和分配给变量的类型(双精度型、整数型)的任何评论,我将不胜感激。

宏的想法是名义利率(i)从1%开始增加一个非常小的值(step)只要它让我们更接近用于正确计算等额支付的贷款总成本 (B)

Function APR(A As Double, B As Double, c As Integer, k As Integer, Optional i As Double = 0.01, Optional step As Double = 0.0001) As Double
'Author Przemyslaw Remin, thanks for explanation to Chris Degnen
'
'A - Loan amount we borrow
'B - Total amount we pay back in equal installments in k periods
'c - Number of compoundings per year
'k - Number of periodic payments
'i - Nominal interest rate, here it will be used as iterator to find correct B
'step - how much we change i, the smaller the step the more precision we get
'
Dim target1 As Double
Dim target2 As Double

Do Until target1 < target2 'we do the loop until the target falls
    target1 = ((i / c) / (1 - (1 + i / c) ^ (-k)) - (B / (k * A))) ^ 2
    i = i + step
    target2 = (((i + step) / c) / (1 - (1 + (i + step) / c) ^ (-k)) - (B / (k * A))) ^ 2
Loop

APR = (1 + i / c) ^ c - 1
End Function

感谢 Chris Degnen 对此处提供的 APR 计算机制的友好解释:https://money.stackexchange.com/questions/43450/how-to-calculate-annual-percentage-rate?noredirect=1#comment64347_43450

【讨论】:

【解决方案2】:

这是对 OP 解决方案的修改:

首先,确保 B > A;即有一个正利率

然后,假设一个可笑的小利率:比如说,0.000000000001%

将其与年金公式中的其他数据一起使用,以计算此假定利率预期的定期付款。计算出的付款将小于问题中指定的付款,因为真实利率高于假设的利率。

将假设利率翻倍并重复上一步。最终,计算的付款将超过给定的付款。你现在有一个太大的当前假设利率,而之前的假设利率太小了。

在这两个值之间进行二分搜索,直到过高的比率和过低的比率收敛到所需的程度......

【讨论】:

    【解决方案3】:

    这似乎是一个非常不现实的场景,但有可能弄清楚。我确信有一种更简单的方法可以做到这一点,但您可以使用 =PMT 公式返回它。

    https://www.youtube.com/watch?v=MXf0HU-JQ1Q

    下载此 YouTube 视频中包含的文件并更新您的价值观。现在使用虚拟 APR 作为插头。删除 60 个周期后的所有行和 sum 已付利息列。您正在寻找一个场景,其中您支付了 1,000.00 的利息,考虑到贷款是 1,000,并且您说您总共支付了 2,000.00 等额付款。因此,您需要 60 个周期内的 Intest 总和应为 1,000。

    您可以从那里开始调整 APR,注意在达到目标之前支付的总利息。我想出 136.87%,这是不现实的,但正如我所说,除非我读错了,否则您的场景似乎相当不现实。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多