2016-03-17 51 views
3

我對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'或任何其他命令的情況下獲得相同的結果?

+0

這個問題與excel無關。 –

+0

Ethun_Hunt @它與Excel相關,我不想在PHP中尋求幫助,我需要Excel中的公式幫助。 – Shijil

+0

他的意思是這是一個數學問題,因爲你不想使用固有的Excel函數,所以它可以像Excel一樣容易地在計算器上完成。 –

回答

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

注:

這不是我的代碼。我沒有通過全面的輸入測試它。

EDIT#1:

這是一個用戶定義函數。用戶定義函數(UDF)是非常容易安裝和使用:

  1. ALT-F11帶來了VBE窗口
  2. ALT-I ALT + M打開一個新的模塊
  3. 粘貼的東西,關閉VBE窗口

如果保存工作簿,UDF將與其一起保存。 如果您在2003年後使用的是Excel版本,則必須將文件 保存爲.xlsm而不是。XLSX

要刪除UDF:

  1. 彈出VBE窗口如上
  2. 清晰的代碼進行
  3. 關閉VBE窗口

要使用從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

必須啓用宏才能使其工作!

+0

優秀的答案! –

+0

@AlexBell所有功勞都應該去** pgc01 ** –

+0

加里的學生@我應該在哪裏使用它? – Shijil

相關問題