Excel VBA | VBA 財務関数一覧

Excel VBA VBA
スポンサーリンク

こちらに「繰上返済を考慮したローンシミュレーション」のVBAサンプルを整理しました。
通常の返済シミュレーションに「繰上返済(期間短縮型/返済額軽減型)」を組み込んだ例です。


繰上返済シミュレーションの基本構造

1. 前提条件

  • 借入額:3,000万円
  • 年利:3.0%(固定)
  • 返済期間:35年(420回)
  • 繰上返済:5年後に100万円を一括返済

2. コード例(期間短縮型)

Sub LoanWithPrepayment_ShorterTerm()
    Dim ws As Worksheet
    Dim loan As Double, rate As Double, nper As Long
    Dim i As Long, interest As Double, principal As Double, balance As Double
    Dim monthly As Double
    
    Set ws = Sheets("返済表")
    ws.Cells.Clear
    ws.Range("A1:F1").Value = Array("回数", "返済額", "利息", "元金", "残高", "備考")
    
    loan = 30000000
    rate = 0.03 / 12
    nper = 35 * 12
    balance = loan
    monthly = Pmt(rate, nper, -loan)
    
    For i = 1 To nper
        interest = IPmt(rate, i, nper, -loan)
        principal = PPmt(rate, i, nper, -loan)
        
        ' 繰上返済(60回目=5年後)
        If i = 60 Then
            balance = balance - 1000000
            ws.Cells(i + 1, 6).Value = "繰上返済 -100万円"
        End If
        
        balance = balance - principal
        ws.Cells(i + 1, 1).Value = i
        ws.Cells(i + 1, 2).Value = monthly
        ws.Cells(i + 1, 3).Value = interest
        ws.Cells(i + 1, 4).Value = principal
        ws.Cells(i + 1, 5).Value = balance
        
        If balance <= 0 Then Exit For
    Next i
End Sub
VB

👉 期間短縮型:繰上返済で残高を減らし、返済期間を短縮。毎月の返済額は変わらない。


3. コード例(返済額軽減型)

Sub LoanWithPrepayment_LowerPayment()
    Dim ws As Worksheet
    Dim loan As Double, rate As Double, nper As Long
    Dim i As Long, interest As Double, principal As Double, balance As Double
    Dim monthly As Double
    
    Set ws = Sheets("返済表")
    ws.Cells.Clear
    ws.Range("A1:F1").Value = Array("回数", "返済額", "利息", "元金", "残高", "備考")
    
    loan = 30000000
    rate = 0.03 / 12
    nper = 35 * 12
    balance = loan
    monthly = Pmt(rate, nper, -loan)
    
    For i = 1 To nper
        interest = balance * rate
        principal = monthly - interest
        
        ' 繰上返済(60回目=5年後)
        If i = 60 Then
            balance = balance - 1000000
            ' 残高に基づき再計算(返済額軽減)
            monthly = Pmt(rate, nper - i, -balance)
            ws.Cells(i + 1, 6).Value = "繰上返済 -100万円(返済額再計算)"
        End If
        
        balance = balance - principal
        ws.Cells(i + 1, 1).Value = i
        ws.Cells(i + 1, 2).Value = monthly
        ws.Cells(i + 1, 3).Value = interest
        ws.Cells(i + 1, 4).Value = principal
        ws.Cells(i + 1, 5).Value = balance
        
        If balance <= 0 Then Exit For
    Next i
End Sub
VB

👉 返済額軽減型:繰上返済後に毎月の返済額を再計算し、負担を軽減。


✅ まとめ

  • 期間短縮型 → 毎月の返済額は変えず、返済期間を短縮
  • 返済額軽減型 → 返済期間は変えず、毎月の返済額を減らす
  • VBAで返済表を自動生成すれば、繰上返済の効果(利息軽減額・期間短縮効果)を可視化できる

💡 この仕組みを応用すれば、複数回の繰上返済やボーナス併用返済にも対応可能です。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました