【VBA】経理計算関数の使い方を徹底解説
以下のリンクから各関数の詳細な説明にジャンプできます。
- Rate関数 – 投資の利率計算
- DDB関数 – 減価償却の計算
- SLN関数 – 1期あたりの減価償却費計算
- SYD関数 – 指定期間の減価償却費
- FV関数 – 積み立て投資の将来価値計算
- IPmt関数 – 将来金利の計算
- NPer関数 – 支払回数の計算
- Pmt関数 – 年金支払額の計算
- PPmt関数 – 元金の計算
- PV関数 – 現在価値の計算
- IRR関数 – 内部収益率の計算
- MIRR関数 – 修正内部利益率の計算
- NPV関数 – 正味現在価値の計算
Rate関数 – 投資の利率計算
Rate関数は、一定期間ごとに一定額の支払い(または受け取り)がある場合に、各期間の利率を求めるための関数です。書式は以下の通りです:
Rate(nper, pmt, pv, [fv], [type], [guess])
各引数の意味は以下のとおりです。
- nper : 全体の支払回数(例:ローンの月数や年数)。
- pmt : 各期の支払額。支出の場合は負の値、受け取りの場合は正の値を使用します。
- pv : 現在価値。初期の借入金額や投資額を表します。
- fv : 将来価値。省略時は0となります。
- type : 支払いのタイミング。0は期末、1は期首。(省略可能)
- guess : 利率の初期予想値。省略すると通常0.1(10%)が使用されます。
例:
たとえば、借入金100,000円を24か月で返済し、毎月の返済額が5,000円(実際の支払いはマイナスの値として入力)である場合、月ごとの利率を計算するには以下のように記述します。
' VBAコード例
Dim interestRate As Double
interestRate = Rate(24, -5000, 100000)
MsgBox "月利は " & Format(interestRate, "0.00%") & " です。"
このコードは、月ごとの利率を計算し、メッセージボックスに結果を表示します。
DDB関数 – 減価償却の計算
DDB関数は、定率法(倍額減価償却法など)を用いて、特定の期間の減価償却費を計算するために使用します。書式は次のとおりです:
DDB(cost, salvage, life, period, [factor])
各引数の意味は以下の通りです。
- cost : 資産の取得原価。
- salvage : 資産の残存価値(最終的に残る価値)。
- life : 資産の耐用年数。
- period : 減価償却費を計算したい期間。
- factor : 減価償却率の乗数。通常は2(倍額)ですが、必要に応じて変更可能。
例:
取得原価が10,000円、残存価値が1,000円、耐用年数が5年の資産について、2年目の減価償却費を計算する場合:
' VBAコード例
Dim depreciation As Double
depreciation = DDB(10000, 1000, 5, 2)
MsgBox "2年目の減価償却費は " & Format(depreciation, "#,##0") & " 円です。"
SLN関数 – 1期あたりの減価償却費計算
SLN関数は、定額法を使用して、各期ごとに均等な減価償却費を計算します。書式は以下の通りです:
SLN(cost, salvage, life)
各引数は以下の意味を持ちます。
- cost : 資産の取得原価。
- salvage : 資産の残存価値。
- life : 耐用年数。
例:
取得原価が12,000円、残存価値が2,000円、耐用年数が10年の場合、1年あたりの減価償却費は以下のように計算されます。
' VBAコード例
Dim annualDepreciation As Double
annualDepreciation = SLN(12000, 2000, 10)
MsgBox "1年あたりの減価償却費は " & Format(annualDepreciation, "#,##0") & " 円です。"
この場合、計算式は \(\frac{12,000 – 2,000}{10} = 1,000\) 円となります。
SYD関数 – 指定期間の減価償却費
SYD関数は、年数総和法(Sum-of-the-Years’ Digits)を使用して、各期間ごとの減価償却費を計算します。書式は次のとおりです:
SYD(cost, salvage, life, period)
引数の意味は以下の通りです。
- cost : 資産の取得原価。
- salvage : 資産の残存価値。
- life : 耐用年数。
- period : 減価償却費を計算したい期間(通常は年単位)。
例:
取得原価が8,000円、残存価値が800円、耐用年数が4年の場合、1年目と2年目の減価償却費を計算してみましょう。
' VBAコード例
Dim depYear1 As Double, depYear2 As Double
depYear1 = SYD(8000, 800, 4, 1) ' 1年目の減価償却費
depYear2 = SYD(8000, 800, 4, 2) ' 2年目の減価償却費
MsgBox "1年目: " & Format(depYear1, "#,##0") & " 円, 2年目: " & Format(depYear2, "#,##0") & " 円"
計算の基本的な考え方は、全期間の年数の合計(この場合は \(4+3+2+1=10\))を分母とし、各期の数字を分子として用いる点にあります。
FV関数 – 積み立て投資の将来価値計算
FV関数は、定期的な支払いや投資に基づいて、将来の資産価値(Future Value)を計算するために使用します。書式は以下の通りです:
FV(rate, nper, pmt, [pv], [type])
引数の意味は次の通りです。
- rate : 各期間の利率。
- nper : 総期間数。
- pmt : 各期の定期支払額。
- pv : 現在価値。省略時は0となります。
- type : 支払いのタイミング。0は期末、1は期首。
例:
毎月1,000円を、年利5%(月利に換算すると約0.4167%)で10年間(120ヶ月)積み立てた場合の将来価値は、次のように求められます。
' VBAコード例
Dim futureValue As Double
futureValue = FV(0.05/12, 120, -1000, 0, 0)
MsgBox "積み立てた後の将来価値は " & Format(futureValue, "#,##0") & " 円です。"
IPmt関数 – 将来金利の計算
IPmt関数は、各期の支払いのうち、利息部分のみを計算するための関数です。書式は以下のとおりです:
IPmt(rate, per, nper, pv, [fv], [type])
各引数の意味は以下の通りです。
- rate : 各期間の利率。
- per : 利息を計算したい期番号。
- nper : 総支払回数。
- pv : 現在価値(借入金額など)。
- fv : 将来価値。省略可能。
- type : 支払いタイミング。0は期末、1は期首。
例:
例えば、借入金100,000円を24回の返済で、月利2%で返済する場合、3回目の支払いにおける利息部分は次のように求められます。
' VBAコード例
Dim interestPayment As Double
interestPayment = IPmt(0.02, 3, 24, 100000)
MsgBox "3回目の利息部分は " & Format(interestPayment, "#,##0.00") & " 円です。"
NPer関数 – 支払回数の計算
NPer関数は、一定の利率と定期支払いで、元の投資額や借入額を返済するのに必要な期間数を計算します。書式は次のとおりです:
NPer(rate, pmt, pv, [fv], [type])
引数の意味は以下の通りです。
- rate : 各期間の利率。
- pmt : 各期の支払額。
- pv : 現在価値。
- fv : 将来価値。省略時は0となる。
- type : 支払いタイミング。0または1。
例:
たとえば、現在の借入金額が50,000円、月々の返済額が-5,000円、月利が1%の場合、返済完了までに必要な回数は次のように計算されます。
' VBAコード例
Dim totalPeriods As Double
totalPeriods = NPer(0.01, -5000, 50000)
MsgBox "返済完了まで必要な期間は " & totalPeriods & " 期です。"
Pmt関数 – 年金支払額の計算
Pmt関数は、一定期間のローン返済または投資において、各期の支払額を計算するために用いられます。書式は以下の通りです:
Pmt(rate, nper, pv, [fv], [type])
各引数の意味は以下の通りです。
- rate : 各期間の利率。
- nper : 総支払回数。
- pv : 現在価値。
- fv : 将来価値。省略時は0。
- type : 支払いのタイミング(0または1)。
例:
たとえば、借入金200,000円を年利6%、返済期間が5年で返済する場合、年ごとの返済額は以下のように求められます。
' VBAコード例
Dim payment As Double
payment = Pmt(0.06, 5, 200000)
MsgBox "年間返済額は " & Format(payment, "#,##0") & " 円です。"
PPmt関数 – 元金の計算
PPmt関数は、各期の返済額のうち、元金(Principal)の部分だけを計算します。書式は以下の通りです:
PPmt(rate, per, nper, pv, [fv], [type])
引数の意味は、先に説明したPmt関数とほぼ同様です。ここで特に注目すべきは、perで、元金計算を行う特定の期を指定する点です。
例:
たとえば、先ほどの例と同じ条件(借入金200,000円、年利6%、5年間の返済)で、3年目の元金返済額を求める場合:
' VBAコード例
Dim principalPayment As Double
principalPayment = PPmt(0.06, 3, 5, 200000)
MsgBox "3年目の元金返済額は " & Format(principalPayment, "#,##0") & " 円です。"
PV関数 – 現在価値の計算
PV関数は、将来のキャッシュフローや支払額が、現在の価値に換算された金額を計算します。書式は以下の通りです:
PV(rate, nper, pmt, [fv], [type])
各引数の意味は以下の通りです。
- rate : 各期間の利率。
- nper : 総期間数。
- pmt : 各期の支払額。
- fv : 将来価値。省略時は0。
- type : 支払いタイミング(0または1)。
例:
例えば、毎月-1,000円の支払いが120回続くとき、月利0.5%で現在の価値を求める場合:
' VBAコード例
Dim presentValue As Double
presentValue = PV(0.005, 120, -1000)
MsgBox "現在価値は " & Format(presentValue, "#,##0") & " 円です。"
IRR関数 – 内部収益率の計算
IRR関数は、投資プロジェクトやキャッシュフロー系列に対して、内部収益率(Internal Rate of Return)を計算します。書式は以下の通りです:
IRR(values, [guess])
values は、キャッシュフローの配列または範囲で、最初の値は初期投資(通常は負の値)を示し、その後に各期の収益が続きます。
guess は初期予想値で、通常は省略可能です。
例:
初期投資-10,000円、その後の年間収入がそれぞれ2,000円、3,000円、4,000円、5,000円の場合、内部収益率は次のように計算されます。
' VBAコード例
Dim cashFlows As Variant
cashFlows = Array(-10000, 2000, 3000, 4000, 5000)
Dim internalRate As Double
internalRate = IRR(cashFlows)
MsgBox "内部収益率は " & Format(internalRate, "0.00%") & " です。"
MIRR関数 – 修正内部利益率の計算
MIRR関数は、IRR関数の欠点を補うために、再投資率や資金調達コストを考慮した修正内部利益率(Modified Internal Rate of Return)を計算します。書式は以下の通りです:
MIRR(values, finance_rate, reinvest_rate)
各引数の意味は次のとおりです。
- values : キャッシュフロー系列。
- finance_rate : 資金調達(借入)コストの利率。
- reinvest_rate : 再投資時の利率。
例:
初期投資が-10,000円、以降のキャッシュフローが2,000円、3,000円、4,000円、5,000円の場合、資金調達コストが5%、再投資率が7%の場合のMIRRは、以下のように計算されます。
' VBAコード例
Dim cashFlowsMIRR As Variant
cashFlowsMIRR = Array(-10000, 2000, 3000, 4000, 5000)
Dim modifiedIRR As Double
modifiedIRR = MIRR(cashFlowsMIRR, 0.05, 0.07)
MsgBox "修正内部利益率は " & Format(modifiedIRR, "0.00%") & " です。"
NPV関数 – 正味現在価値の計算
NPV関数は、将来のキャッシュフローを現在価値に割り引いた合計を計算し、投資の正味現在価値(Net Present Value)を求めるために使用されます。書式は以下の通りです:
NPV(rate, values)
rate は各期間の割引率、values は各期間のキャッシュフロー系列を示します。なお、初期投資額は通常、計算前に別途考慮します。
例:
割引率が8%の場合、各期のキャッシュフローが3,000円、4,000円、5,000円で、初期投資が-10,000円の場合、NPVは次のように計算されます。
' VBAコード例
Dim cashFlowsNPV As Variant
cashFlowsNPV = Array(3000, 4000, 5000)
Dim netPresentValue As Double
netPresentValue = NPV(0.08, cashFlowsNPV) - 10000
MsgBox "正味現在価値は " & Format(netPresentValue, "#,##0") & " 円です。"
この例では、NPV関数で得た現在価値の合計から初期投資額を差し引いて、最終的な正味現在価値を求めています。