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 ・・・新着記事一覧を見る

CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)
IfステートメントとIIF関数とMax関数の速度比較|VBA技術解説(6月23日)
Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.変数とデータ型(Dim)|ExcelマクロVBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄
10.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説



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

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


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




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