こんにちは、うーちゃんです。
気が付けば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に追従する為です)
コードが書けたので
シートの方にマクロのボタンを設置します。
今回は金と言うボタンを設置
右クリックでマクロを登録して
完了です。
このマクロで
複利の偉大さを知り
資産を増やしてもらいたいものです。
では