VBAの基礎は分かったけど、値を計算する方法がわからない・・・
四則演算だけでなく、VBAで使う計算方法を網羅的に知りたいな・・・
基礎的なVBAのコードが実行できるようになったら、計算処理を作りたいですよね。ただ、値を計算するだけのコードを書くことは少なく、計算した値を使って処理を作ったり、複雑な処理を計算したり・・・実現したいことによって覚えるべきことはたくさんあります。
こんにちは!フリーランスエンジニア兼テックライターのワキザカです。
この記事では、VBAで計算する方法・合わせて覚えると便利な知識について解説します。
計算するだけでなく、計算処理を使いこなしてVBAのコードが書けるようになりたい方におすすめです。
この記事はこんな人のために書きました。
- VBAの超基礎から抜け出したい人
- VBAで計算処理をマスターしたい人
VBAで四則演算するための算術演算子の使い方
はじめに、VBAで四則演算するための算術演算子の使い方について解説します。
VBAでは、次のように書くことで足し算、引き算、掛け算、割り算などの四則演算をすることができます。
No | 演算子 | 意味 | 例 | 結果 |
---|---|---|---|---|
1 | + | 足し算 | 1 + 5 | 6 |
2 | - | 引き算 | 5 - 1 | 4 |
3 | * | 掛け算 | 1 * 5 | 5 |
4 | / | 割り算 | 10 / 2 | 5 |
5 | \ | 割り算の商 | 10 \ 3 | 3 |
6 | Mod | 割り算の余り | 10 Mod 3 | 1 |
7 | ^ | べき乗 | 2 ^ 5 | 32 |
これだけだとわからない方もいると思うので、簡単なサンプルを用意しました。
サンプルコード:
Sub 四則演算サンプル() Debug.Print "1 + 2 = " & 1 + 2 Debug.Print "2 - 1 = " & 2 - 1 Debug.Print "2 * 2 = " & 1 * 2 Debug.Print "1 / 2 = " & 1 / 2 End Sub
実行結果:
1 + 2 = 3 2 - 1 = 1 2 * 2 = 2 1 / 2 = 0.5
実行結果をイミディエイトウィンドウに表示するDebug.Printを使って、四則演算した結果を出力するサンプルです。このように、算術演算子を使えば簡単に計算をすることができます。
算術演算子を含めた演算子の使い方については、以下で詳しく解説していますので、ぜひ見てみてくださいね。
VBAで計算処理を作るときに覚えておくと便利な知識とは?
次に、VBAで計算処理を作るときに覚えておくと便利な知識について解説します。
日付・時刻の計算方法
1つ目は、日付・時刻の計算方法です。
Excelでは、日付や時刻を表示することはよくありますよね。次のように表示形式を指定して表示したいケースも、よくあります。
■日付・時刻の表示例
- 2019/05/31 12:00
- 2019/05/31
- 2019/5
- 2019年5月
- 2019年5月31日
- 2019年5月31日 (金)
そのため、VBAで日付・時刻の計算方法を覚えておくのがおすすめです。Now関数、Format関数を使えば簡単に上記のような表示形式で表示することができます。詳しくは以下記事で解説しているので、ぜひ見てみてくださいね!
Excel関数の使い方
2つ目は、Excel関数の使い方です。
Excelで普段使っている関数を、VBAでも使うことができます。使い方は、次のとおりです。
使い方:
Application.WorksheetFunction.関数名
Sum、Sumif、Vlookup、CountIfなど、Excel関数を使いたいケースはよくあります。以下でExcel関数を使う方法を詳しく解説しているので、ぜひ見てみてくださいね!
値を保存する変数の使い方
3つ目は、値を保存する変数の使い方です。
計算処理の値が、途中で変わってしまうケースはよくありますよね。たとえば、消費税率を使って計算しているようなケースです。消費税率が8%から10%に変更になった時に、変数を使っていなかった場合は次のようになります。
変数を使わなかった時のサンプル:
Sub 変数を使わなかった時のサンプル() Debug.Print "商品A(単価1000円)、個数10個の合計金額:" & 1000 * 10 * 1.08 Debug.Print "商品B(単価3000円)、個数5個の合計金額:" & 3000 * 5 * 1.08 Debug.Print "商品C(単価5000円)、個数1個の合計金額:" & 5000 * 1 * 1.08 End Sub
実行結果:
商品A(単価1000円)、個数10個の合計金額:10800 商品B(単価3000円)、個数5個の合計金額:16200 商品C(単価5000円)、個数1個の合計金額:5400
これだと、「8」になっている消費税率を全て修正しないといけないですよね。修正漏れが起こると、金額がずれて事故につながってしまいます。変数を使うと、以下のように値を変更する箇所が1つですみます。
変数を使った時のサンプル:
Sub 変数を使った時のサンプル() '消費税率を変数にセット Dim taxCode As Double taxCode = 1.08 '結果を出力 Debug.Print "商品A(単価1000円)、個数10個の合計金額:" & 1000 * 10 * taxCode Debug.Print "商品B(単価3000円)、個数5個の合計金額:" & 3000 * 5 * taxCode Debug.Print "商品C(単価5000円)、個数1個の合計金額:" & 5000 * 1 * taxCode End Sub
実行結果:
商品A(単価1000円)、個数10個の合計金額:10800 商品B(単価3000円)、個数5個の合計金額:16200 商品C(単価5000円)、個数1個の合計金額:5400
結果は同じですが、今後消費税率が変わっても変数に値をセットしている「taxCode = 1.08」の値を変更するだけで修正がすみますよね。ミスも減るので、保守性も高まります。変数の詳しい使い方については以下で解説しているので、ぜひ見てみてくださいね!
計算結果を返す関数の作り方
4つ目は、計算結果を返す関数の作り方です。
計算処理を作るときは1回計算するだけでなく、計算した結果を使って別の計算に使いたい・・・というケースがほとんどですよね。そのため、計算した結果を使って処理を作る方法を覚えておくと便利です。
VBAでは、計算方法をFunction関数として自作することができます。A+Bの計算をするFunction関数を作り、2つの値を計算する処理を使う時に作ったFunction関数を使うイメージですね。たとえば、次のような感じです。
サンプルコード:
'計算結果を出力するメイン処理 Sub Function関数を使う例() Debug.Print 引数Aと引数Bの合計を返す関数(10, 20) End Sub 'AとBの計算結果を返すFunction関数 Function 引数Aと引数Bの合計を返す関数(A As Integer, B As Integer) As Integer 引数Aと引数Bの合計を返す関数 = A + B End Function
実行結果:
30
カッコ「()」の中に入れたA、Bの値を合計するFunction関数を使い、計算結果を出力するサンプルです。「引数Aと引数Bの合計を返す関数(10, 20)」のように値を入れることで、10 + 20をした結果を出力しています。
今回は簡単な例ですが、複雑な計算処理をFunction関数で作っておけば、ミスなく計算を行うことができます。よく使う計算はFunction関数として作れると、とても便利ですね。詳しい使い方は、以下で解説しています。
計算結果によって処理を分けるIF文の使い方
5つ目は、計算結果によって処理を分けるIF文の使い方です。
計算した結果によって、処理を分けたいケースはよくありますよね。条件によって処理を分けたいときは、IF文を使います。使い方は次のとおりです。
IF文の使い方
If 条件式 Then 'ここに条件が一致したときの処理を書く End If
条件式には、「A = B」「A + B > 10」のように比較演算子を使います。
比較演算子の使い方:
No | 演算子 | 意味 | 例 | 結果 |
---|---|---|---|---|
1 | = | 等しい | 1 = 5 | FALSE |
2 | <> | 等しくない | 5 <> 1 | TRUE |
3 | > | 大きい | 1 > 5 | FALSE |
4 | < | 小さい | 1 < 5 | TRUE |
5 | >= | 以上 | 1 >= 5 | FALSE |
6 | <= | 以下 | 1 <= 5 | TRUE |
比較演算子の使い方、IF文の使い方については以下で詳しく解説しているので、ぜひ見てみてくださいね!
計算途中で変数の値を確認する方法
次に、計算途中で変数の値を確認する方法について解説します。
変数や今まで解説した計算方法を駆使していけば、複雑な計算処理でも作ることができます。ただ、計算ミスが見つかった時に、何が間違っているか探す作業に時間がかかることが多いです。そのため、計算途中で値を確認する方法を覚えておくのがおすすめです。
途中で変数の値を確認するときに便利なのが、Debug.Printです。これまでのサンプルでも使ってきましたが、次のように変数の値を確認することができます。
Debug.Printの使い方:
Debug.Print 変数
VBAの処理をすべて書きあげてから処理を確認するのではなく、こまめにDebug.Printで計算結果や値が間違っていないか確認しながら進めることで、ミスを減らしつつ高速でコーディングすることができます。使い方は以下で解説しているので、ぜひ見てみてくださいね!
まとめ
今回は、VBAで計算する方法・合わせて覚えると便利な知識について解説しました。
今回解説した内容をマスターすれば、複雑な計算処理でも作ることができます。
1つずつでいいので、ぜひ挑戦してみてくださいね!