シュノーケル Love

地球上の全ての海を潜る勢いで書くシュノーケルログ

超初心者 VBAで単利と複利を比べるものを作ってみた

こんにちは、うーちゃんです。




気が付けば5月も終わり

今年も半分が経とうとしています。

そして気が付けば

日経平均株価が凄いことになっております。




そんな訳で、覚えたてのVBAを使って

投資を単利と複利で運用した場合の差を

比較できるようなものを

練習のつもりで作ってみようと思います。。


個人的にExcelと言ったら

こう言うモノを作るツールだと思っておりましたが

世間ではどうやら違うらしい、

むしろこっち側がマイノリティと言う。

解せぬ。




そんな訳で、作ってみましょう。


まずはこんな表を作ってみました。

VBAって便利ですけど

元のExcelが大事って思う事も多いから

VBAで動かしやすい表を作ります。


まずは例題として分かりやすく

100万円を利率2.5%で10年運用してみたら

でやってみよう

Sub mouke()

    Dim LastRow As Long
    LastRow = Cells(Rows.Count, 4).End(xlUp).Row
    Range("B6:D" & LastRow) = ""

    Dim m As Long
    m = Range("B3")
    Dim y As Long
    y = Range("C3")
    Dim r As Double
    r = Range("D3")
    Dim i As Long
    Dim x As Long
    x = 6
    
    For i = 1 To y
    
      Cells(x, 2).Value = i
      Cells(x, 3).Value = (1 + (r * i)) * m
      Cells(x, 4).Value = ((1 + r) ^ i) * m
      x = x + 1
      
    Next i
    
End Sub

こんなコードを書いてみました

上から変数LastRowを宣言して
記載のある最終行を取って入れます。
そしてB6セルからDの最終行までの値を
消しています。
これは2回目に前回の値をクリアする処理なので
今のところ関係ないですけど
後々役に立つ拘り的なヤツです。

次に変数を宣言し
投資金額、投資期間、利率を
それぞれ変数に入れていきます。
これは後に単利と複利を計算する為です。

次に For~Nextまでですが
Forはループ処理ですから
まず投資期間の間、
つまり、1年目から投資期間を入れた変数y年目までの
回数ループします。

変数Xに入れた6は入力する最初の行である
6行目の数字を入れています。
これによりCells(x,2) つまりB6セルから入力するよ
って事にしていますね。
Cells(X,2).value = i
ですから B6セルに変数iの値を入れるって事です。
変数i はループするたびに1加算されますから
投資期間の変数yまでの年数を
ループするたびにB列に入れていきます
今回は投資期間が10年なので1~10までの数値を
B6セルからB列に入れていきます。

次に
Cells(x, 3).Value = (1 + (r * i)) * m
ですが、
これはCells(x,3) つまりC6セルから
(1 + (r * i)) * mと言う単利の儲けを足した
値を入れていくと言うコードです。
変数rは利率を入れていますので今回は2.5%
単利計算の公式は

投資金額×(1+(利率×年数))です。

なので公式の年数のところに変数i
利率はこのまま変数rを入れて
C6セルから年数ごとの金額を入れていく
というコードになります。

次の
 Cells(x, 4).Value = ((1 + r) ^ i) * m
というコードはCells (x,4)
つまりD6セルから複利で得た儲けを足した
値を入れていくと言うコードです。
複利を求める公式は

投資金額×(1+利率)年数乗

です。

まぁ、この公式だけ見ても複利の方が
ヤバいくらい得だよねって分かるんですが
数字で見たいって言うのが人情です。
Excelの場合、乗計算は ^ で表しますので
((1 + r) ^ i)こうなる訳です。
それで得た値をD6セルから年数分
入れていくコードです。

ぶっちゃけると、Excelには
複利計算の関数が用意されています。
=FV(利率,期間,定期支払額,-現在価値,支払期日)
と言うFV関数です。

今回の例題である

100万円を10年間2.5%で運用するを
FV関数でやると

=FV(D3,C3,,-B3)

で出てきます。

ほら。

FV関数は 単に複利を求めたい場合
定期支払額は必要ないので何も入れず , で
支払期日も要らないのでノータッチです。
これらは例えば毎月20万円は手元に残すとか
テクニカル計算の時に使うアレです。
こんなモノは銀行員か職業ファイナンシャルプランナー
しか使わないアレです。

じゃあ、これでいいんじゃね?
って思いますけど、
まぁ、VBAの練習なので
賛否両論あるとは思いますけど
VBA等のプログラミングは
結局のところ数学力が最終的な拠り所と
思っております。
なので練習で数学的なことを使うのは
意義があると思っている派閥です。
なので今回はそう言うもんだと思ってください。

まぁ、練習なので

で、最後の x = x + 1 は

変数xは最初に書きだすセルの行だったので
ループ、つまり今回は投資期間までループするので
ループが次に行くたびに値を入れるセルを
下に(つまり+1)移していかなければならないので
(変数iはカウンター変数なのでループを回るたびに+1される)
x = x + 1 しています。(変数iに追従する為です)

コードが書けたので
シートの方にマクロのボタンを設置します。
今回は金と言うボタンを設置

右クリックでマクロを登録して
完了です。

このマクロで
複利の偉大さを知り
資産を増やしてもらいたいものです。

では