2009-12-03

VBAで足し算

今日の内容

  • 九九のプログラム提出
  • 足し算のプログラム
講義で扱うと遅いので講義ではやりませんが、Google Street View岡山にも対応しました。

大きな地図で見る

課題提出

前回作ったExcel VBAのプログラムを提出してください。
メールの件名は学籍番号と「VBA九九」と書いて、九九のプログラムをSubからEnd Subまでコピーしてメール本文に貼り付けて、本文最後に名前を書いてください。

足し算

前回のファイルに続けて書きましょう。 別のプログラムを書くには、前回のプログラムのEnd Subの下の行に
Sub 別のプログラムの名前
と書いてEnterを押すと、区切りの線が自動的に引かれます。

1から10までの数の合計は、Excelのセルに =1+2+3+4+5+6+7+8+9+10 と入力すれば計算できます。 では1から100までの数の合計はどうやって計算しましょうか。等差数列の和の公式を使って =100*(100+1)/2 でも計算できますが、今後色々な数を足す機会もありますから、公式を使わずに足し算してみましょう。
1+2+3+…+99+100と入力していては大変ですので、For文を使った繰り返しで計算しましょう。まず
 wa = 0
としておいて
 wa = wa + 1 (この時点でwaは1)
 wa = wa + 2 (この時点でwaは1+2)
 wa = wa + 3 (この時点でwaは1+2+3)
 wa = wa + 4
 wa = wa + 5

 wa = wa + 98
 wa = wa + 99
 wa = wa + 100
とするとwa=1+2+3+…+99+100になりますので、最後に
 Cells(1,1) = wa
と書いて計算結果を表示しましょう。

練習

上記のプログラムを、実際に100行も書くことは出来ませんから、For文を使って書いて、1から100までの数の合計を求めてください。
5050になれば正解です。

データの読み込み

例えば、Excelの講義の最初の頃に使った
県名人口総数男比率女比率
鳥取294321
島根368402
岡山9391014
広島13981484
山口734817
この表で、男性人口を足し算するプログラムを書きましょう。
 x1 = cells(2,2)
 x2 = cells(3,2)
 x3 = cells(4,2)
 x4 = cells(5,2)
 x5 = cells(6,2)
 wa = x1 + x2 + x3 + x4 + x5
 cells(7,1) = "合計"
 cells(7,2) = wa
と書くと、7つの数字を足すことが出来ます。ではもっと沢山のデータを足すにはどうすればよいでしょうか。
そのために、配列というものを使います。

配列

これまでの変数はxとかx1のように書きましたが、数学で使うx1, x2のように添え字付の変数を使うことも出来ます。添え字付の変数はx(1), x(2)のように書きます。
使う場合は、プログラムの先頭で

Dim x(60)

のように、何個まで使うか明示しておく必要があります。
もしx(1)は使わなくてx(2)からx(10)まで使うのなら

Dim x(2 To 10)

と書きます。

11月19日の講義で使った1変量のデータをA1セルから貼り付けてください。
復習:Firefoxから貼り付けるときは「形式を選択して貼り付け」を選んで「テキスト」を選択します。

Cells(1,1)からCells(60,1)までに貼り付けられた数字をx(1)からx(60)へ読み込むには

For i = 1 To 100
 x(i) = Cells(i, 1)
Next i

と書きます。
次に、これらを足すには、1+2+…+60の計算同様

wa = 0
For i = 1 To 60
 wa = wa + x(i)
Next i

と書きます。

これらを繋げて、

Sub 合計()
Dim x(60)

For i = 1 To 60
 x(i) = Cells(i, 1)
Next i

wa = 0
For i = 1 To 60
 wa = wa + x(i)
Next i

Cells(1,2) = "合計"
Cells(1,3) = wa

End Sub

というプログラムで60個のデータを足すことが出来ます。

練習

11月19日の講義で使った2変量のデータで、20人の身長の合計と平均を求めるプログラムを書いてください。

0 件のコメント: