EXCEL VBAやPHP、Query、Ajaxに関するWINDOWS・WEBプログラミングの解説ブログです。

IF関数とVBAで10%、8%税率計算式を使い分ける、10分コピペで関数・VBAセット学習

IF関数とVBAで10%、8%税率計算式を使い分ける




今回は、IF関数でイートイン、テイクアウトの10%、8%税率計算を使い分けます。コンビニでの食品もイートイン、テイクアウトで税率が異なります。IF関数は、条件により、計算式を変えることが出来ます。前半では、IF関数をROUNDDOWN関数も含めて使い方を解説します。後半は、IF関数をVBAで表現します。

IF関数

コンビニ食材のイートイン、テイクアウトで消費税が異なることを具体的な例題とします。
IF関数を用いて、もしイートインであれば10%、そうでなければ8%と計算します。

消費税G列に入る、各行の小計に対する消費税額をIF関数で次のように入力します。
=IF(D3=”イートイン”,F3*0.1,F3*0.08)
D列がイートインの場合、F3×0.1 そうでなければ F3×0.08 が入ります。
IF関数は IF(論理式,値が真の場合実行される計算式,値が偽の場合実行される計算式)と書きます。
D3=”イートイン”が論理式で、そうであれば、F3×0.1の計算式が実行され、そうでなければ、F3×0.08の計算式が実行されます。
G3セルをコピーして、下の行に順番にペーストしていきます。小数点以下の桁数も表示されてしまいます。

実際の通貨では、小数点以下はありませんので、小数点以下切り捨てにする必要があります。ROUNDDOWN関数を使います。

イコールとIFの間にROUNDDOWN(、末尾に,0)を追加します。
=ROUNDDOWN(IF(D3=”イートイン”,F3*0.1,F3*0.08),0)
ROUNDDOWN関数は、ROUNDDOWN(数値,桁数)と書きます。
小数点以下切り捨てにするときは、桁数には0を入れます。
このように、IF関数でイートイン、テイクアウトそれぞれの計算式を適用することができ、ROUNDDOWN関数で小数点以下を切り捨てにすることができます。
次に、VBAで IF関数を表現してみましょう。

VBAで IF関数を表現

キーボードのAltキーを押しながらF11キーを押してください。VBAのエディターが起動します。
もし、VBAのエディターが最大表示されていたら、右上の縮小をクリックして、縮小し、シートと並べて表示することをお薦めします。
挿入、標準モジュールをクリックしてください。
Module1上にプログラムコードを記載していきます。

変数を一つ宣言します。
iは、売上表内の行番号を格納します。
エディターが非表示になったら、Altキーを押しながらF11キーを押せば、表示されます。
売上表の3行目の「焼き鮭おにぎり」に対する消費税を取得したいので、i=3とします。
右三角ボタンを押して、プログラムを実行します。

4列目が”イートイン”であったら、×0.1が、そうでなければ、×0.08の計算式が適用されます。

売上の3行目のから12行目まで、同じ処理をしたいので、for next 文を外側に書きます。

右三角ボタンを押して、プログラムを実行すると、消費税額が計算されています。
小数点以下の桁数も表示されていますので、同様に、小数点以下切り捨てにする必要があります。

Application.WorksheetFunction.RoundDown(数値,桁数)と書き、ワークシート関数ROUNDDOWNをVBAでも利用し、小数点以下を切り捨てます。


このように、Application.WorksheetFunction.関数 でワークシート関数をVBAからも利用することができます。
※利用できない関数もあります。

最後に、売上の行数が増えた場合、都度都度 for i = 3 to 11 の 11を書き換えるのもスマートではないです。
プログラムを書き換えます。

変数iは3~100まで1づつ加算されていきますが、i行目の1列目が空白だったら、forのループからEXIT 抜け出します。このようにすれば、売上表が100行目まで増えても、プログラムを書き換える必要はありません。

VBAを有効にしたエクセルファイルを保存するときは、ファイル、名前を付けて保存、Excelマクロ有効ブック(*.xlsm)を選択し、好きなファイル名で保存してください。

ご拝読ありがとうございました。