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

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
公開日:2015-08-19 最終更新日:2021-08-12

第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円未満の端数処理が必要です。

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

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

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

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

第87回.WorksheetFunction(ワークシート関数を使う)
・ワークシート関数の使い方 ・WorksheetFunctionで使用できる関数 ・個別の関数の使い方 ・関数の結果(戻り値) ・WorksheetFunctionの使用例. ・検索系の関数での日付の扱い ・WorksheetFunctionのエラー対処 ・最後に



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

第1回.マクロを書く準備をする(VBAとVBE)

・開発タブの表示 ・VBEの設定 ・標準モジュールの挿入 ・「マクロを書く準備をする」のまとめ ・ExcelマクロVBA入門の対応ページ
第2回.マクロを書いて動かす(SubとF5)
・マクロ有効ブックの作成 ・マクロVBAを書いてみる ・マクロVBAの実行 ・複数のマクロVBAを書く ・プロシージャーとは ・「マクロを書いて動かす」のまとめ ・ExcelマクロVBA入門の対応ページ
第3回.セルに数字や文字を入れる(RangeとCells)
・セルに文字を入れる ・セルに数字を入れる ・マクロVBAを実行 ・RangeとCells ・セル範囲(複数セル)に一括入力 ・「セルに数字や文字を入れる」のまとめ ・ExcelマクロVBA入門の対応ページ
第4回.セルの値を使って計算する(四則演算)
第5回.同じ計算を行数分繰り返す(For~Next)
・練習用のデータ作成について ・1行だけの計算をする場合は ・VBAの変数とは ・変数を使って行をずらしていく ・デバッグ:ステップ イン F8 ・変数を使った繰り返し処理 ・For~Nextの補足説明 ・VBAコードの書き方について ・ExcelマクロVBA入門の対応ページ
第6回.表の先頭から最終行まで繰り返す(ForとEnd(xlUp).Row)
・表の最終行を取得する ・表の最終行まで繰り返す ・VBAの文法を覚える必要があるか ・ExcelマクロVBA入門等の対応ページ
第7回.セルの値によって計算を変える(Ifステートメント)
・Ifの説明用のサンプル ・マクロVBAでのIfの使い方 ・Ifステートメントの書き方 ・Ifのネスト(入れ子) ・AndとOr ・ElseIfとSelect Caseについて ・マクロVBAは、プログラミングです ・Ifステートメントの練習問題 ・改行方法について ・ExcelマクロVBA入門等の対応ページ
第8回.表範囲をまとめて消去する(OffsetとClearContents)
・見出しを残しデータ部分のみ消去 ・Offsetを使って範囲をずらす ・データ範囲に関係なく消去する場合 ・ExcelマクロVBA入門等の対応ページ
第9回.関数という便利な道具(VBA関数)
・これだけは覚えておきたい必須VBA関数 ・VBA関数の練習 ・ExcelマクロVBA入門の対応ページ
第10回.ワークシートの関数を使う(WorksheetFunction)
・マクロVBAでのワークシート関数の使い方 ・長いスペルの単語を簡単に入れる方法 ・ワークシート関数を使ってみよう ・ワークシート関数を使う時の注意点、エラー対策 ・ExcelマクロVBA入門等の対応ページ
第11回.分からない事はエクセルに聞く(マクロの記録)
・マクロの記録の使い方 ・実際に分からない事を調べる時の手順 ・「分からない事はエクセルに聞く」のまとめ ・ExcelマクロVBA入門等の対応ページ


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

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




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


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


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