不使用“RATE”命令

时间:2016-03-17 13:03:51

标签: excel math excel-formula

我对Excel的了解较少,现在我希望你的帮助可以在不使用RATE命令的情况下计算excel中的兴趣率。 (这样我就可以尝试在php中转换公式) 这是我们在Excel中使用的代码

  • B5 = 60
  • B4 = 16070
  • B3 = 750000
  • B6 = 1

    = RATE(B5,B4,-B3,0,B6)* 12

它应该给出“10.75%”的结果。

如何在不使用'RATE'或任何其他命令的情况下获得相同的结果?

1 个答案:

答案 0 :(得分:2)

来自pgc01's answer


Function MyRATE(nper As Integer, pmt As Double, pv As Double, Optional fv As Double = 0, _
                              Optional PaymentEnd As Integer = 0, Optional guess As Double = 0.1)
    Dim a As Double, b As Double, c As Double ' coefficients of the equation
    Dim R As Double, RTmp As Double, i As Integer

    ' Initialize coefficients and R
    R = 1 + guess
    a = (pmt * (1 - PaymentEnd) - pv) / (pv + pmt * PaymentEnd)
    b = (fv - pmt * PaymentEnd) / (pv + pmt * PaymentEnd)
    c = (-pmt * (1 - PaymentEnd) - fv) / (pv + pmt * PaymentEnd)

    ' Iterate
    For i = 1 To 20
        RTmp = R - (R ^ (nper + 1) + a * R ^ nper + b * R + c) / ((nper + 1) * R ^ nper + a * nper * R ^ (nper - 1) + b)
        If Abs(RTmp - R) < 0.0000001 Then Exit For
        R = RTmp
    Next i

    If i <= 20 Then
        MyRATE = RTmp - 1
    Else
        MyRATE = "N/A" ' Must try another guess
    End If
End Function

enter image description here

<强> 注意:

这不是我的代码。我还没有对所有输入进行测试。

修改#1:

这是用户定义的功能。用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为 .xlsm 而不是 .xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel工作表单元格中使用UDF:

      = myrate(B5,B4,-B3,0,B6)* 12

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      有关UDF的详细信息,请参阅:

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      必须启用宏才能使其生效!