VBA再入門
第4回.セルの値を使って計算する(四則演算)

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
最終更新日:2020-09-26

第4回.セルの値を使って計算する(四則演算)


エクセルは表計算ソフトです。
マクロVBAでも、何はともあれ計算出来なければなりません、


計算とは、2つ以上の数値を演算するという事です。
エクセルではセルに入っている数値を使って計算します。
マクロVBAでも同様にセルに入っている数値を使って計算できます。

下の例でやってみましょう。
A1セルとB1セルの数値で、四則演算してみます。

Excel マクロVBA 実行結果

さっそく書いてみましょう、プロシージャーを追加します。

セルの値を使って足し算

まずは足し算だけ、Cellsで書きましょう。

sub 練習5
Enter
TAB
cells(2,3)=cells(2,1)+cells(2,2)
Enter


Excel マクロVBA サンプルコード

このようになりましたね。

=や+の前後には、勝手に半角空白が入って見やすくなってくれます。
では入力カーソルが、
Sub 練習5 ~ End Sub の間にある状態で実行F5

Excel マクロVBA 実行結果

C2セルに、
110
と表示されました。

セルの書き方は、セルに値を入れる時と同じですので、

Cells(2, 3) = Cells(2, 1) + Cells(2, 2)
Range("C2") = Range("A2") + Range("B2")


この2つは同じことです。
しかし、この場合のセル位置は移動する可能性が高そうですね、
こういう場合は、最初からCellsで書きましょう。
計算式の書き方は、シートでの計算式と同じなので、簡単ですね。

セルの値を使って四則演算

では、引き算、掛け算、割り算も書きましょう
足し算の下の行から、

cells(2, 4)=cells(2, 1)-cells(2, 2)
Enter
cells(2, 5)=cells(2, 1)*cells(2, 2)
Enter
cells(2, 6)=cells(2, 1)/cells(2, 2)
Enter


Excel マクロVBA サンプルコード

実行すると、

Excel マクロVBA 実行結果

ちゃんと計算できました。

四則演算の記号については、シートの計算式と同じです。

+ 足し算
- 引き算
* 掛け算
/ 割り算


これは問題ないでしょう。

セルの値を使った応用計算

では、少しだけ複雑な計算をしてみましょう。
以下の計算をしてみましょう。

Excel マクロVBA 実行結果

数量1と数量2を足し、税抜き単価を掛けて税抜き小計を求めます。
そして、税抜き小計に消費税(1.08)を掛けて税込み合計を求めます。
消費税8%の時に書いた記事です。
sub 練習6
Enter
TAB
cells(2,4)=cells(2,1)*(cells(2,2)+cells(2,3))
Enter
cells(2,5)=cells(2,4)*1.08
Enter


Excel マクロVBA サンプルコード

実行すると、

Excel マクロVBA 実行結果

計算できました。

括弧がちょっと面倒ですね。
小学校で習いましたが、
掛け算と割り算を先に計算して、その後に足し算と引き算を行います。
エクセルは、これを忠実に守っていますので、
今回の場合は、足し算を先に行う必要があるので括弧()で囲んでいます。
110×(5+7)
Cellsで書くとちょっと混乱しますが、このように書けばわかるはずです。
それぞれの数値をCellsに置き換えれば完成します。

また、固定の数値は、このまま書けば良いです。
これは、シートでの計算と同じです。
ただし、消費税率を固定で書き込んでおくことの是非は別問題です。

ワークシートの関数を使った計算

税込み合計の少数が気になりますか・・・なりますよね。
四捨五入か切り捨てか、1円未満の端数処理が必要です。

シートなら、
=ROUNDDOWN(D2*1.08,0)
四捨五入なら、このように書くでしょう。
切り捨てなら、INT関数を使うかもしれません。
何にしろ、関数が必要なんです。
マクロVBAでも同様に関数が必要です。
Cells(2, 5) = WorksheetFunction.Round(Cells(2, 4) * 1.08, 0)
このように書きます。

WorksheetFunctionって何?
関数についての詳細は、後々に説明します。
今は、シートで使う関数を書くときは、
WorksheetFunction.関数名(引数・・・)
このように書くものだと覚えてください。

ExcelマクロVBA入門の対応ページ

第15回.四則演算と注釈(コメント)
エクセルは表計算ソフトですから、計算が出来なくては話になりません。四則演算(加減剰余)は必須です。この四則演算で使う算術演算の演算子は、ワークシートの演算子と同じです。あわせて、注釈(コメント)の書き方も覚えましょう。

第87回.WorksheetFunction(ワークシート関数を使う)
VBA関数以外に、Excelワークシート関数をマクロVBAで使うことが出来ます、ワークシート関数は、VBA関数よりはるかに多くの関数があるので、ぜひ活用したいところです。。ワークシート関数を使う事で、VBAコードを非常に簡潔に記述することが出来る場合が多いものです。



同じテーマ「マクロVBA再入門」の記事

第1回.マクロを書く準備をする(VBAとVBE)
第2回.マクロを書いて動かす(SubとF5)
第3回.セルに数字や文字を入れる(RnageとCells)
第4回.セルの値を使って計算する(四則演算)
第5回.同じ計算を行数分繰り返す(For~Next)
第6回.表の先頭から最終行まで繰り返す(ForとEnd(xlUp).Row)
第7回.セルの値によって計算を変える(Ifステートメント)
第8回.表範囲をまとめて消去する(OffsetとClearContents)
第9回.関数という便利な道具(VBA関数)
第10回.ワークシートの関数を使う(WorksheetFunction)
第11回.分からない事はエクセルに聞く(マクロの記録)


新着記事NEW ・・・新着記事一覧を見る

VBA100本ノック 18本目:名前定義の削除|VBA練習問題100(11月6日)
VBA100本ノック 17本目:重複削除(ユニーク化)|VBA練習問題100(11月6日)
VBA100本ノック 16本目:無駄な改行を削除|VBA練習問題100(11月5日)
VBA100本ノック 15本目:シートの並べ替え|VBA練習問題100(11月4日)
VBA100本ノック 14本目:社外秘シート削除|VBA練習問題100(11月3日)
VBA100本ノック 13本目:文字列の部分フォント|VBA練習問題100(11月1日)
VBA100本ノック 12本目:セル結合を解除|VBA練習問題100(10月31日)
VBA100本ノック 11本目:セル結合の警告|VBA練習問題100(10月30日)
VBA100本ノック 10本目:行の削除|VBA練習問題100(10月29日)
VBA100本ノック 9本目:フィルターコピー|VBA練習問題100(10月28日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.マクロって何?VBAって何?|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ