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

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

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


エクセルは表計算ソフトです、


何はともあれ計算出来なければなりません、

計算とは、2つ以上の数値を演算するという事です、

エクセルでは、セルに入っている数値を使って計算します。

下の例でやってみましょう。

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)を掛けて税込み合計を求めます。

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.関数名(引数・・・)
このように書くものだと覚えてください。




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

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

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

Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)

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

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • セルの値を使って計算する(四則演算)

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


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






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

    本文下部へ