我对Excel的知识较少,现在我希望您的帮助能够在不使用RATE命令的情况下计算Excel中的感兴趣汇率。 (这样我可以尝试在PHP式转换) 这是我们在Excel中使用的代码在没有使用“RATE”命令的情况下在Excel中获得汇率
- B5 = 60
- B4 = 16070
- B3 = 750000
B6 = 1
= RATE(B5,B4,-B3,0,B6)* 12
它应该给的“10.75结果%“的速度。
如何在不使用'RATE'或任何其他命令的情况下获得相同的结果?
我对Excel的知识较少,现在我希望您的帮助能够在不使用RATE命令的情况下计算Excel中的感兴趣汇率。 (这样我可以尝试在PHP式转换) 这是我们在Excel中使用的代码在没有使用“RATE”命令的情况下在Excel中获得汇率
B6 = 1
= RATE(B5,B4,-B3,0,B6)* 12
它应该给的“10.75结果%“的速度。
如何在不使用'RATE'或任何其他命令的情况下获得相同的结果?
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
注:
这不是我的代码。我没有通过全面的输入测试它。
EDIT#1:
这是一个用户定义函数。用户定义函数(UDF)是非常容易安装和使用:
如果保存工作簿,UDF将与其一起保存。 如果您在2003年后使用的是Excel版本,则必须将文件 保存为.xlsm而不是。XLSX
要删除UDF:
要使用从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
必须启用宏才能使其工作!
这个问题与excel无关。 –
Ethun_Hunt @它与Excel相关,我不想在PHP中寻求帮助,我需要Excel中的公式帮助。 – Shijil
他的意思是这是一个数学问题,因为你不想使用固有的Excel函数,所以它可以像Excel一样容易地在计算器上完成。 –