(Excel用)月割計算による利息計算を行う自作関数 INTCALM
月割計算による利息計算を行うユーザー定義関数 INTCALM を作りました。1か月に満たない端数部分は年365日日割計算をします。
(Excel用)裁判所における計算方法に従った利息計算を行う自作関数 INTCAL - 法律事務雑記帳と併せて、住宅ローンの利息計算などにお使いください。
なお、INTCAL と同じく、ktDATEDIF(http://addinbox.sakura.ne.jp/Excel_Tips05.htm#ktDATEDIF2)が必要です。
使い方
=INTCALM(元金, 年利, 期間開始日, 期間終了日, [初日算入の指定, ][一円未満の端数処理の指定])
「初日算入の指定」以下は省略可です。省略した場合、「初日不算入(片端入れ)」「一円未満切捨」で計算します。
「初日算入の指定」には、0又は1を入力してください。0は「初日不算入(片端入れ)」、1は「初日算入(両端入れ)」です。何も入力しなければ「初日不算入(片端入れ)」となります。
「一円未満の端数処理の指定」には、0又は1又は2を入力してください。0は「切捨」、1は「四捨五入」、2は「切上」です。何も入力しなければ「切捨」となります。
使用例
H25.1.10融資実行のローン(元金6,000,000円)を元利均等払で毎月10日限り返済する場合を想定
(1) 元金6,000,000円、年利2.2%、期間H25.1.10~H25.2.10、初日不算入、切捨
(融資実行日から最初の約定弁済日までの1か月間の利息を計算する)
=INTCALM(6000000, 0.022, "2013/1/10", "2013/2/10", 0, 0) → 11000
(2) 元金5,503,240円、年利2.2%、期間H25.12.10~H25.12.25、初日不算入、切捨
(繰上返済する場合に直近の約定弁済日H25.12.10から繰上返済日H25.12.25まで15日間の利息を計算する)
=INTCALM(5503240, 0.022, "2013/12/10", "2013/12/25", 0, 0) → 4975
INTCALM のコード本体
'利息の月割計算 (interest calculation <month>) Function INTCALM(元金 As Currency, 年利 As Double, 期間開始日 As Date, 期間終了日 As Date, _ Optional 初日算入の指定 As Integer = 0, Optional 一円未満の端数処理の指定 As Integer = 0) amount = 元金 i = 年利 date_begin = 期間開始日 date_end = 期間終了日 opt2 = 初日算入の指定 opt3 = 一円未満の端数処理の指定 'opt2 初日算入の指定 ' 0(default) 初日不算入(片端入れ) ' 1 初日算入(両端入れ) 'opt3 一円未満の端数処理の指定 ' 0(default) 切捨 ' 1 四捨五入 ' 2 切上 '初日算入の処理 date_begin = date_begin - opt2 Dim ans As Currency m = ktDATEDIF(date_begin, date_end, "M") d = ktDATEDIF(date_begin, date_end, "MD") ans = amount * i / 12 * m + amount * i * d / 365 '1か月未満の端日数は年365日日割計算 '一円未満の端数処理 Select Case opt3 Case 1 '四捨五入 ans = Application.WorksheetFunction.Round(ans, 0) Case 2 '切上 ans = Application.WorksheetFunction.RoundUp(ans, 0) Case Else '切捨 ans = Application.WorksheetFunction.RoundDown(ans, 0) End Select If ((opt2 = 0) Or (opt2 = 1)) And ((opt3 = 0) Or (opt3 = 1) Or (opt3 = 2)) Then INTCALM = ans Else 'optが指定の数字以外の場合にエラーを出す INTCALM = CVErr(xlErrValue) End If End Function
「関数ライブラリ」からダイアログボックスにより INTCALM 関数を利用する
Sub RegisterINTCALM() Application.MacroOptions Macro:="INTCALM", _ Description:="月利による利息計算をします。1か月に満たない端数は年365日日割計算をします。", _ Category:="財務", _ ArgumentDescriptions:=Array( _ "には利息計算の対象となる元金を指定します。", _ "には年利を指定します。", _ "には利息計算の対象となる期間の開始日を指定します。", _ "には利息計算の対象となる期間の終了日を指定します。", _ "0: 初日不算入(片端入れ)(default)" & vbCrLf & "1: 初日算入(両端入れ)", _ "0: 切捨(default)" & vbCrLf & "1: 四捨五入" & vbCrLf & "2: 切上"), _ HelpFile:="" End Sub