これはユーザー定義関数だけでなく、既存の関数でも同じです。
もし数百行~数千行にもなる複雑な処理が必要な場合でも、ユーザー定義関数として作っておけば、たった1行で呼び出すことができます。
最初はイメージし難いかも知れませんが、実はとても便利なことなのです。
これだけでもVBAを習得するメリットがあります。
例えば、預貯金で利息を計算する場面を考えてみましょう。
・問題1
あなたは1年間で1,000円の利息が欲しいとします。
この時、普通預金の金利が0.05%です。(年利)
預貯金の利息には、源泉徴収税が20%かかります。
さて、元金をいくら預ければ、手取りで1,000円の利息が得られますか?
答えは250万円です。
2,500,000円 × 0.05%(0.0005) = 1,250円
1,250円 × 20%(0.2) = 250円
1,250円 - 250円 = 1,000円
これくらいなら、力技で何とか計算できます。
では、もう少し難しくなるとどうでしょうか?
・問題2
1年間で利息が5,000円欲しくて、金利が1.2%なら、元金はいくら必要ですか?
こうなると簡単には計算できません。逆算するのは難しいですよね。
一つの方法としては、Excelのセルに以下のような計算式を入力すれば、答えがでます。
= 5000 / ((1.2 / 100) * (1 - 0.2))
答えは、約520,833.33円です。
でも、条件の数値が変わる度に計算式を入力し直すと、ミスが出そうです。
それにExcelに詳しくない人に任せると、もっと心配ですよね。
そこで、ユーザー定義関数を使って、簡単に計算できるようにしてみましょう。
今回は初めてなので、私のほうでExcelファイルを用意しました。
gankin.zip をダウンロードしてください。
このファイルには、calcGankin()という、ユーザー定義関数を作成してあります。
使い方は次回のステップで詳しく解説しますが、ユーザー定義関数を使うと、以下のように簡単に計算できるようになります。
・例
=calcGankin(5000,1.2)
=calcGankin(1000,0.5)
それぞれを適当なセルに計算式として入力すると、答えが返って来ます。
・1番目の引数は、1年間で欲しい利息の金額です。
・引数が複数ある場合は、半角の「,」(カンマ)で区切ります。
・2番目の引数は、金利(年利)をパーセントで指定します。
*金利の%は不要です。数値だけ入力します。
*引数とは、関数に渡す値のことです。
ユーザー定義関数名と、引数に指定する数値を変えるだけで、答えが出せるのがポイントです。
Excelのセルに直接長い計算式を入力する場合よりも、ずっとシンプルになっていることが分かると思います。
元金の計算式自体は隠れているので、式を書き間違えてしまう心配はありません。
これなら入力ミスが、かなり減ると思います。また仕事を他の人に頼んでも安心です。
そしてもう一つ大事なポイントです。
今回の計算は1行で済みますが、これが複雑になると、セルに直接計算式を入力する方法では無理があります。
ところがユーザー定義関数にすると、数百行~数千行のプログラムでも、たった1行で呼び出せます。
これこそがユーザー定義関数を作るメリットなのです。