第2講 計算させてみよう。

第4話 表の縦・横の合計を出してみよう。

今回は、エクセルの次のような表の縦横の合計を計算させるプログラムを考えてみよう。

17 66 88
63 30 45
63 47
48 95 78


まず、サンプル4をダブルクリックして開いてください。
このマクロは縦の合計を計算させるプログラムです。
Alt+F11でVisual Basic開いて実行のプログラムを見ると次のようになっています。

Private Sub CommandButton1_Click()

    Cells(9, 1) = Cells(5, 1) + Cells(6, 1) + Cells(7, 1) + Cells(8, 1)
    Cells(9, 2) = Cells(5, 2) + Cells(6, 2) + Cells(7, 2) + Cells(8, 2)
    Cells(9, 3) = Cells(5, 3) + Cells(6, 3) + Cells(7, 3) + Cells(8, 3)

End Sub

ではこれを参考に横合計を計算させるプログラムを作ってみましょう。
解答

以上のプログラムは余りにも単純で、しかもコンピュータの特徴をまったく利用していないので、
いいプログラムとは言えません。
コンピュータの特徴というのは、コンピュータは繰り返しというのをまったく苦にしないということです。
単純計算を何年でも続けることができます。
そこで、プログラムの改良を考えていくことにします。
そのためには、すでに1度解説(第2講第1話参照)していますが、変数や=の数学との違いを理解していなければなりません。
サンプル5開いてください。
プログラムは次のようになっています。

Private Sub CommandButton1_Click()

    Dim wa As Integer

    wa = 0
    wa = wa + Cells(5, 1)
    wa = wa + Cells(6, 1)
    wa = wa + Cells(7, 1)
    wa = wa + Cells(8, 1)
    Cells(9, 1) = wa

End Sub
1行目のDim wa As Integerはwaが整数型の変数であることを宣言しています。
(Dimは定義、Integerは整数、Asはとしてを意味しますからwaを整数として定義するということになります。)
次の行wa = 0は解説の必要はないでしょう。
問題は3行目以降でしょう。
wa = wa + Cells(5, 1)
を理解するためには変数が何であり、=が何であるか理解しなければなりません。
変数は値を入れるための箱です。1行目で0を入れていますから、

  wa

となっています。
したがって、 wa + Cells(5, 1)は0+17を計算せよという命令です。
その答えは17です。
そして、=はその値を改めてwaという箱に入れ直せという命令ですから

  wa
となります。
wa = wa + Cells(5, 1)はwa ← wa + Cells(5, 1)と理解してください。
右辺の計算を先に実行してから、その合計をもう一度waの箱に入れ直しているわけです。
箱には1つの値しか入りませんから0は追い出されて17が入るのです。
wa = wa + Cells(6, 1)
の右辺wa + Cells(6, 1)は現在waには現在17が入っていますから17+63となります。
その合計が80が、=の命令によって改めてwaの箱に入れ直されます。

  wa
以下同様にして、計算していくと1列目の縦の合計が計算されていくわけです。

では皆さん、第2列以降の縦合計とすべての横合計も計算させるプログラムを書いていましょう。
解答
解答解説

このプログラムもまだまだコンピュータの特徴を活かしきっていません。
同じようなプログラムを何回も書いているからです。
繰り返しは、人間がするのではなくコンピュータにさせるようにしたいのです。
そのためにはFor文を理解する必要があります。
第3講では、For文を解説していきます。


第3話へ 第3講第1話へ

講義トップへ

数学研究室に戻る