VBAで計算する方法とは?合わせて覚えると便利な知識も解説!


VBAの基礎は分かったけど、値を計算する方法がわからない・・・
四則演算だけでなく、VBAで使う計算方法を網羅的に知りたいな・・・

基礎的なVBAのコードが実行できるようになったら、計算処理を作りたいですよね。ただ、値を計算するだけのコードを書くことは少なく、計算した値を使って処理を作ったり、複雑な処理を計算したり・・・実現したいことによって覚えるべきことはたくさんあります。

こんにちは!フリーランスエンジニア兼テックライターのワキザカです。

この記事では、VBAで計算する方法・合わせて覚えると便利な知識について解説します。

計算するだけでなく、計算処理を使いこなしてVBAのコードが書けるようになりたい方におすすめです。

この記事はこんな人のために書きました。

  • VBAの超基礎から抜け出したい人
  • VBAで計算処理をマスターしたい人

VBAで四則演算するための算術演算子の使い方

はじめに、VBAで四則演算するための算術演算子の使い方について解説します。

VBAでは、次のように書くことで足し算、引き算、掛け算、割り算などの四則演算をすることができます。

No演算子意味結果
1+足し算1 + 56
2-引き算5 - 14
3*掛け算1 * 55
4/割り算10 / 25
5\割り算の商10 \ 33
6Mod割り算の余り10 Mod 31
7^べき乗2 ^ 532

これだけだとわからない方もいると思うので、簡単なサンプルを用意しました。

サンプルコード:

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を使って、四則演算した結果を出力するサンプルです。このように、算術演算子を使えば簡単に計算をすることができます。

算術演算子を含めた演算子の使い方については、以下で詳しく解説していますので、ぜひ見てみてくださいね。

【ExcelVBA入門】計算や条件式を作るための演算子の使い方を徹底解説!
更新日 : 2018年12月13日

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関数を使えば簡単に上記のような表示形式で表示することができます。詳しくは以下記事で解説しているので、ぜひ見てみてくださいね!

【ExcelVBA入門】 日付・時刻を取得するためのNow関数の使い方とは?
更新日 : 2018年10月13日

Excel関数の使い方

2つ目は、Excel関数の使い方です。

Excelで普段使っている関数を、VBAでも使うことができます。使い方は、次のとおりです。

使い方:

Application.WorksheetFunction.関数名

Sum、Sumif、Vlookup、CountIfなど、Excel関数を使いたいケースはよくあります。以下でExcel関数を使う方法を詳しく解説しているので、ぜひ見てみてくださいね!

【VBA入門】関数の使い方(VBA関数一覧、ワークシート関数の入力)
更新日 : 2019年4月28日

値を保存する変数の使い方

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」の値を変更するだけで修正がすみますよね。ミスも減るので、保守性も高まります。変数の詳しい使い方については以下で解説しているので、ぜひ見てみてくださいね!

【VBA入門】変数をDimで宣言し、 Asでデータ型を定義する方法
更新日 : 2019年10月1日

計算結果を返す関数の作り方

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関数として作れると、とても便利ですね。詳しい使い方は、以下で解説しています。

VBAの関数とは?関数の種類・メリット・作り方を徹底解説!
更新日 : 2019年4月4日

計算結果によって処理を分けるIF文の使い方

5つ目は、計算結果によって処理を分けるIF文の使い方です。

計算した結果によって、処理を分けたいケースはよくありますよね。条件によって処理を分けたいときは、IF文を使います。使い方は次のとおりです。

IF文の使い方

If 条件式 Then
    'ここに条件が一致したときの処理を書く
End If

条件式には、「A = B」「A + B > 10」のように比較演算子を使います。

比較演算子の使い方:

No演算子意味結果
1=等しい1 = 5FALSE
2<>等しくない5 <> 1TRUE
3>大きい1 > 5FALSE
4<小さい1 < 5TRUE
5>=以上1 >= 5FALSE
6<=以下1 <= 5TRUE

比較演算子の使い方、IF文の使い方については以下で詳しく解説しているので、ぜひ見てみてくださいね!

【ExcelVBA入門】計算や条件式を作るための演算子の使い方を徹底解説!
更新日 : 2018年12月13日
VBAのIf文を使いこなそう! 条件分岐の基本をスッキリ解説
更新日 : 2019年9月26日

計算途中で変数の値を確認する方法

次に、計算途中で変数の値を確認する方法について解説します。

変数や今まで解説した計算方法を駆使していけば、複雑な計算処理でも作ることができます。ただ、計算ミスが見つかった時に、何が間違っているか探す作業に時間がかかることが多いです。そのため、計算途中で値を確認する方法を覚えておくのがおすすめです。

途中で変数の値を確認するときに便利なのが、Debug.Printです。これまでのサンプルでも使ってきましたが、次のように変数の値を確認することができます。

Debug.Printの使い方:

Debug.Print 変数

VBAの処理をすべて書きあげてから処理を確認するのではなく、こまめにDebug.Printで計算結果や値が間違っていないか確認しながら進めることで、ミスを減らしつつ高速でコーディングすることができます。使い方は以下で解説しているので、ぜひ見てみてくださいね!

【ExcelVBA入門】最初に覚えると幸せになれるDebug.Printの使い方!
更新日 : 2019年5月26日

まとめ

今回は、VBAで計算する方法・合わせて覚えると便利な知識について解説しました。

今回解説した内容をマスターすれば、複雑な計算処理でも作ることができます。

1つずつでいいので、ぜひ挑戦してみてくださいね!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説